Введение
ведение
SQL является самым популярным языком баз данных. Не важно, кто вы — разработчик приложений, администратор баз данных, Web-дизайнер или пользователь пакета Microsoft Office, — хорошее практическое знание SQL поможет вам взаимодействовать с базами данных.
Эта книга была написана из необходимости. Несколько лет я вел курс по разработке Web-приложений, и студенты постоянно просили порекомендовать им книгу по SQL. Существовало много книг, посвященных данной теме, и некоторые из них действительно были очень хороши. Но всем им было присуще одно общее свойство: в них было слишком много информации для большинства пользователей. Вместо того чтобы раскрывать тему SQL, в большинстве книг излагалось все, от разработки баз данных до теории реляционных баз данных и администрирования. Хотя это очень важные темы, они не интересны большинству людей, которые просто хотят изучить SQL.
Итак, не найдя ни одной книги, которую я бы мог порекомендовать, я вложил весь опыт преподавания в книгу, которую вы держите в руках. Данная книга поможет вам быстро освоить SQL. Начнем мы с простой выборки данных, затем перейдем к более сложным темам, таким как использование операций объединения, подзапросы, хранимые процедуры, индексы, триггеры и ограничения. Обучение будет проходить методично, систематично и просто — на каждый урок вам потребуется не более 10 минут.
Третья редакция этой книги уже помогла изучить SQL сотням тысяч пользователей, теперь пришел ваш черед. Переходите к первому уроку и приступайте к работе. Вы быстро научитесь писать первоклассные SQL-запросы.
Для кого эта книга
Эта книга для вас, если вы
■ новичок в SQL;
■ хотите быстро научиться использовать SQL;
■ хотите научиться использовать SQL в разрабатываемых вами приложениях;
■ хотите самостоятельно составлять запросы к базам данных на SQL без чьей-либо помощи.
Урок 1
Что такое SQL
На этом уроке вы узнаете, что такое SQL и что с его помощью можно сделать.
Основы баз данных
Тот факт, что вы читаете книгу по SQL, говорит о том, что вам так или иначе необходимо работать с базами данных. Язык SQL предназначен именно для этого, поэтому перед тем, как перейти к его рассмотрению, очень важно, чтобы вы познакомились с некоторыми основными понятиями технологии баз данных.
Хотите вы этого или нет, но вы постоянно пользуетесь базами данных. Каждый раз, когда вы выбираете имя в адресной книге электронной почты, вы используете базу данных. Если вы что-то ищете при помощи поискового сервера в Internet, вы используете базу данных. Когда вы регистрируетесь в локальной сети на работе, вы вводите свое имя и пароль, которые затем сравниваются со значениями, хранящимися в базе данных. И даже когда вы используете свою пластиковую карту в банкомате, вы используете базу данных при проверке PIN-кода и остатка на счету.
Однако несмотря на то, что мы постоянно используем базы данных, для многих остается непонятно, что же это на самом деле такое. И происходит это отчасти потому, что разные люди пользуются одними и теми же терминами, относящимися к базам данных, для определения совершенно разных вещей. Поэтому мы начнем наше обучение со списка определений наиболее важных терминов, относящихся к базам данных.
На этом уроке вы узнаете, как использовать оператор SELECT для выборки одного или нескольких столбцов данных из таблицы.
Оператор SELECT
Как уже говорилось в уроке 1, "Что такое SQL", SQL-операторы являются обычными английскими терминами. Эти термины называются ключевыми словами, и каждый SQL-оператор состоит из одного или нескольких ключевых слов. Наиболее часто вы будете использовать оператор SELECT. Он предназначен для выборки информации из таблиц.
Ключевое слово
Зарезервированное слово, являющееся частью языка SQL. Никогда не называйте таблицу или столбец таким словом. В приложении Д "Зарезервированные слова SQL" перечислены некоторые из наиболее часто используемых ключевых слов.
Чтобы при помощи оператора SELECT извлечь данные из таблицы, нужно указать как минимум две вещи — что вы хотите выбрать и откуда.
Рассматриваемые примеры
В примерах SQL-операторов (а также полученных с их помощью результатов) в этой книге используются файлы данных, описанные в приложении А, "Сценарии демонстрационных таблиц". Если вы хотите самостоятельно выполнить действия, указанные в примерах (очень рекомендуем это делать}, обратитесь к
УрокЗ
Сортировка выбранных данных
На этом уроке вы узнаете, как использовать предложение ORDER BY оператора SELECT для сортировки полученных в результате выборки данных.
Сортировка данных
Из последнего урока вы узнали, что следующий SQL-оператор возвращает один столбец из таблицы базы данных. Но взгляните на результат: данные выводятся в полном беспорядке.
ВВОД
SELECT prod_name FROM Products;
ВЫВОД
prod_name
Fish bean bag toy Bird bean bag toy Rabbit bean bag toy 8 inch teddy bear 12 inch teddy bear 18 inch teddy bear Raggedy Ann King doll Queen doll
Вообще-то выбранные данные отображаются не в полном беспорядке. При отсутствии сортировки данные обычно выводятся в том порядке, в котором они находятся в таблице. Это может быть порядок, в котором они изначально добав-
Урок 4
Фильтрация данных
На этом уроке вы узнаете, как использовать предложение WHERE оператора SELECT для указания предложений поиска.
Использование предложения WHERE
В таблицах баз данных обычно содержится очень много информации и довольно редко возникает необходимость выбирать все строки таблицы. Гораздо чаще бывает нужно извлечь какую-то часть данных таблицы для каких-либо действий или отчетов. Выборка только необходимых данных включает в себя критерий поиска, также известный под названием предложение фильтрации.
В операторе SELECT данные фильтруются путем указания критерия поиска в предложении WHERE. Предложение WHERE указывается сразу после названия таблицы (предложения FROM) следующим образом:
ВВОД
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
Анализ
Этот оператор извлекает два столбца из таблицы товаров, но показывает не все строки, а только те, значение в столбце prod_price которых равно 3 .49:
ВЫВОД
prod_name prod_pri.ce
Fish bean bag toy 3.4ЭО0
Урок 5
Расширенная фильтрация данных
В этом уроке вы узнаете, как можно комбинировать предложения WHERE для создания мощных и сложных условий поиска. Вы также узнаете, как следует использовать ключевые слова NOT и in.
Комбинирование предложений WHERE
Все предложения WHERE, представленные в уроке 4, "Фильтрация данных", отфильтровывают данные с использованием одного критерия. Чтобы увеличить уровень контроля над фильтром в SQL, можно использовать несколько предложений WHERE. Эти предложения допустимо использовать двумя способами: в виде предложений AND или OR.
Оператор
Специальное ключевое слово, используемое для объединения или изменения предложений внутри предложения where. Также известны под названием логические операторы'.
1 Термин statement в русскоязычной литературе по языку SQL принято переводить как оператор (и мы следовали этой традиции во всех предыдущих уроках), хотя точнее его следовало бы переводить как инструкция. В данном случае речь идет именно об операторах (operator). — Прим. put).
Урок 6
Использование метасимволов для фильтрации
В этом уроке вы узнаете, что такое метасимволы, как их использовать и как выполнять поиск с применением метасимволов и логического оператора like для фильтрации выводимых данных.
Использование логического оператора LIKE
Все предыдущие операторы, которые мы рассмотрели, производили фильтрацию по известным значениям. Они искали совпадения по одному или нескольким значениям, более чем и менее чем известное значение или диапазон значений. При этом везде искалось известное значение. Однако фильтрация данных таким способом не всегда работает. Например, как бы вы искали продукты, в названии которых содержатся слова bean bag? Этого нельзя сделать при помощи простых операций сравнения, здесь на помощь приходит поиск с использованием метасимволов. При помощи метасимволов можно создавать условия поиска данных. В этом примере, для того чтобы найти все продукты, в названии которых содержатся слова bean bag, необходимо составить шаблон поиска, позволяющий найти текст bean bag в любом месте названия продукта.
Урок 7
Создание вычисляемых полей
В этом уроке вы узнаете, что такое вычисляемые поля, как их создавать и как использовать псевдонимы для ссылки на такие поля из вашего приложения.
Что такое вычисляемые поля
Данные, хранимые в таблицах базы данных, обычно бывают представлены не в таком виде, который необходим для ваших приложений. Вот несколько примеров.
■ Вам необходимо отобразить поле, содержащее имя компании с ее адресом, но эта информация расположена в разных столбцах таблицы.
■ Город, штат и ZIP-код хранятся в отдельных столбцах (как и должно быть), но для программы печати почтовых наклеек необходима эта информация в одном, корректно сформированном поле.
■ Данные в столбце введены с заглавными и строчными буквами, но в вашем отчете необходимо использовать только заглавные буквы.
■ В таблице с предметами заказа хранятся цены продуктов и их количество, но не полная цена (цена одного продукта, умноженная на его количество) каждого продукта. Чтобы распечатать счет, необходимы полные цены.
■ Вам необходимы общая сумма, среднее значение или результаты других расчетов, основанные на данных, имеющихся в таблице.
В каждом из этих примеров данные хранятся не в том виде, в котором их необходимо предоставить приложению.
Урок 8
Использование функций
манипулирования данными
В этом уроке вы узнаете, что такое функции, какие типы функций поддерживаются в СУБД и как их мижно применять. Вы также узнаете, почему использование SQL-функций может быть проблематичным.
Что такое функция
Как и в большинстве других языков программирования, в SQL поддерживается использование функций для манипулирования данными. Функции — это операции, которые обычно производятся над данными, чаще всего для облегчения преобразований и манипулирования.
Примером может служить функция RTRIMO, которую мы использовали в предыдущем уроке для удаления пробелов в конце строки.
Проблемы с функциями
Перед тем как начать урок и рассмотреть примеры, обращаю ваше внимание на то, что использование SQL-функций может быть проблематичным.
В отличие от SQL-операторов (например, SELECT), которые в основном поддерживаются всеми СУБД одинаково, в разных СУБД могут применяться различные функции. Только некоторые функции в различных СУБД выполняются одинаково. И хотя все типы функций обычно доступны в
Урок 8
Использование функций
манипулирования данными
В этом уроке вы узнаете, что такое функции, какие типы функций поддерживаются в СУБД и как их мижно применять. Вы также узнаете, почему использование SQL-функций может быть проблематичным.
Что такое функция
Как и в большинстве других языков программирования, в SQL поддерживается использование функций для манипулирования данными. Функции — это операции, которые обычно производятся над данными, чаще всего для облегчения преобразований и манипулирования.
Примером может служить функция RTRIMO, которую мы использовали в предыдущем уроке для удаления пробелов в конце строки.
Проблемы с функциями
Перед тем как начать урок и рассмотреть примеры, обращаю ваше внимание на то, что использование SQL-функций может быть проблематичным.
В отличие от SQL-операторов (например, SELECT), которые в основном поддерживаются всеми СУБД одинаково, в разных СУБД могут применяться различные функции. Только некоторые функции в различных СУБД выполняются одинаково. И хотя все типы функций обычно доступны в
Урок 9
Суммирование данных
В этом уроке вы узнаете, что такое статистические SQL-функции и как их можно использовать для суммирования данных таблицы
Использование статистических функций
Часто бывает необходимо просуммировать данные без их выборки, и в SQL предусмотрены для этого специальные функции. SQL-запросы с этими функциями часто используются с целью выборки данных для анализа и создания отчетов. Примерами таких выборок могут послужить:
■ определение числи строк в таблице (либо числа строк, которые удовлетворяют какому-то условию или содержат определенное значение);
■ получение суммы по набору строк в таблице;
■ поиск наибольшего, наименьшего и среднего значений из столбца таблицы (из всех или из каких-то конкретных строк).
В каждом из этих примеров необходимы какие-то итоговые данные по таблице, а не сами данные. Поэтому возвращение реальных данных таблицы было бы пустой тратой времени и ресурсов (не говоря о пропускной способности сети). Итак, все, что вам нужно, — это только итоговая информация.
Чтобы облегчить такой способ извлечения информации, в SQL предусмотрен набор из пяти статистических функций, которые перечислены в табл. 9.1. Эти функции позволяют выполнять все варианты выборки, которые были перечислены выше. В отличие от функций манипулирования данными из предыдущего урока, статистические SQL-
Урок 10
Итоговые данные
В этом уроке вы узнаете, как получать итоговые данные таким образом, чтобы можно было суммировать подмножества из содержимого таблицы. Для этого используются два новых предложения оператора SELECT, предложение GROUP BY и предложение HAVING.
Получение итоговых данных
Из предыдущего урока вы узнали, что статистические функции SQL можно использовать для суммирования данных. Это позволяет подсчитывать число строк, вычислять суммы и средние значения, а также получать наибольшее и наименьшее значения, не прибегая к выборке всех данных,
Все эти вычисления до сих пор выполнялись над всеми данными таблицы или над данными, которые соответствовали указанному предложению WHERE. В качестве напоминания приведем пример, в котором возвращается количество продуктов, предлагаемых поставщиком DLL01:
ВВОД
SELECT COUNT)*) AS num_jprods FROM Products
WHERE vend_id = 'DLL01';
ВЫВОД
num_prods 4
Но что, если вы хотите узнать количество продуктов, предлагаемых каждым поставщиком? Или выяснить, какие поставщики предлагают только один продукт, или, наоборот, несколько продуктов?
Урок 11
Использование подзапросов
В этом уроке рассказывается о том, что такое подзапросы и как их можно использовать.
Что такое подзапросы
Операторы SELECT представляют собой запросы SQL. Все операторы SELECT, с которыми мы имели дело до сих пор, представляли собой простые запросы: посредством отдельных операторов извлекались данные из отдельных таблиц базы данных.
Запрос
Какой-либо оператор SQL Однако этот термин обычно используется по отношению к операторам select.
Язык SQL позволяет также создавать подзапросы: запросы, которые вложены в другие запросы. Их также называют вложенные запросы, или подчиненные запросы. Почему возникает необходимость в подзапросах? Лучший способ объяснить эту концепцию — рассмотреть несколько примеров.
Поддержка в MySQL
Если вы используете MySQL, знайте, что подзапросы поддерживаются этой СУБД начиная с версии 4,1. Более ранние версии MySQL запросы не поддерживают.
Урок 12. Объединение таблиц
Объединение таблиц
В этом уроке вы узнаете, что такое объединения, для чего они применяются и как следует оформлять операторы SELECT, использующие объединения.
Что такое объединения
Одной из самых мощных особенностей реализаций языка SQL является возможность "на лету" объединять таблицы при выполнении запросов на выборку данных. Объединения — это самые мощные операции, которые молено выполнить с использованием оператора SELECT языка SQL, поэтому тщательное изучение объединений и их синтаксиса является чрезвычайно важной частью процесса освоения SQL.
Прежде чем вы сможете эффективно использовать объединения, вам следует уяснить, что такое реляционные таблицы, и ознакомиться с основами построения реляционных баз данных. В этой книге полностью осветить эту тему не удастся, но сказанного будет достаточно для того, чтобы вы могли получить полное представление об этом предмете и двигаться дальше.
Что такое реляционные таблицы
Понять, что представляют собой реляционные таблицы, поможет пример из реальной жизни.
Предположим, что некоторая таблица базы данных содержит каталог продуктов, в котором для каждого предмета, включенного в каталог, выделена одна строка. Информация, которая хранится о каждом предмете, должна включать описание продукта и его цену, а также сведения о поставщике и компании, выпустившей данный продукт. Теперь предположим, что вы получили обширный каталог от одного из поставщиков. Где вы должны хранить инфор-
Урок 13
Создание расширенных объединений
В этом уроке вы узнаете все необходимое о дополнительных типах объединений — что они собой представляют и как их можно использовать. Вы также узнаете, как следует применять псевдонимы таблиц и как можно использовать статистические функции по отношению к объединенным таблицам.
Использование псевдонимов таблиц
Ранее, в уроке 7, "Создание вычисляемых полей" вы узнали, как можно использовать псевдонимы в качестве ссылок на выбираемые столбцы таблицы. Синтаксис псевдонимов столбцов выглядит следующим образом:
ВВОД
SELECT RTRIM[vend_name) + ' С + RTRIM [vend_couTitry)
Ч>+ ') ' AS vend^title
FROM Vendors
ORDER BY vend_name;
Помимо возможности применения псевдонимов для имен столбцов и вычисляемых полей, SQL позволяет также использовать псевдонимы вместо имен таблиц. На то есть две основных причины:
■ более короткий синтаксис SQL;
■ это позволяет много раз использовать одну и ту же таблицу в операторе SELECT.
Обратите внимание на следующий оператор SELECT. В основном он такой же, как в примерах предыдущего уро-
Урок 14
Комбинированные запросы
В этом уроке вы узнаете, как использовать оператор UNION для комбинирования многих операторов SELECT с целью получения одного набора результатов.
Что такое комбинированные запросы
В большинстве SQL-запросов используется один оператор, посредством которого возвращаются данные из одной или нескольких таблиц. SQL позволяет также выполнять множественные запросы (за счет многократного использования оператора SELECT) и возвращать результаты в виде одного набора результатов запроса. Эти комбинированные запросы обычно называют соединениями или сложными запросами.
Можно назвать два основных сценария, для выполнения которых вам понадобятся сложные запросы:
■ для возвращения одинаковым образом структурированных данных из различных таблиц посредством одного запроса;
■ для выполнения многократных запросов к одной таблице и возвращения данных в виде результата одного запроса.
Урок 15
Добавление данных
В этом уроке вы узнаете, как можно добавлять данные в таблицы, используя оператор INSERT языка SQL.
Что такое добавление данных
Несомненно, SELECT является наиболее часто используемым оператором языка SQL (именно поэтому мы посвятили его рассмотрению 14 уроков). Но помимо него в SQL часто применяются еще три оператора, которыми вам необходимо уметь пользоваться. Первый из них — оператор INSERT. (О двух других мы расскажем в следующем уроке.)
Как следует из названия, оператор INSERT используется для ввода (добавления) строк в таблицу базы данных. Добавление можно осуществить несколькими способами:
■ добавить одну полную строку;
■ добавить часть одной строки;
■ добавить результаты запроса. Далее мы рассмотрим все эти варианты.
<? Оператор insert и безопасность системы
Для использования оператора INSERT могут потребоваться особые права на доступ в СУБД со структурой клиент-сервер. Прежде чем применять оператор INSERT, убедитесь в том, что у вас есть на это право.
Добавление полных строк
Простейший способ добавления данных в таблицу может быть реализован при использовании основного синтаксиса оператора INSERT. Для этого нужно указать имя таблицы и
Урок 16
Обновление и удаление данных
В этом уроке вы узнаете о том, как нужно использовать операторы UPDATE и DELETE, позволяющие осуществлять манипуляции с данными вашей таблицы.
Обновление данных
Для обновления (модификации) данных какой-либо таблицы используется оператор UPDATE. Этот оператор можно использовать двумя способами:
■ для обновления определенной строки таблицы;
■ для обновления всех строк таблицы. Рассмотрим каждый из названных способов.
<> Не пропускайте предложение where
Применять оператор update нужно особенно аккуратно, потому что с его помощью можно ошибочно обновить все строки таблицы. Прочитайте весь раздел, посвященный оператору update, прежде чем использовать этот оператор.
<? Оператор update и безопасность
Для использования оператора update в СУБД со структурой клиент-сервер могут понадобиться особые права доступа. Прежде чем применять этот оператор, удостоверьтесь в том, что вам предоставлены соответствующие права.
Урок 17
Создание таблиц и работа с ними
В этом уроке вы познакомитесь с основными правилами создания, перестройки и удаления таблиц.
Создание таблиц
Язык SQL используется не только для манипуляций с данными таблиц, он предназначен для выполнения всех операций с базами данных и таблицами, включая собственно создание таблиц и работу с ними.
Существует два способа создания таблиц.
■ Большинство СУБД сопровождается инструментарием администратора, который можно использовать для интерактивного создания таблиц базы данных и управления ими.
■ Таблицами можно также манипулировать посредством операторов языка SQL.
Для создания таблиц программным способом используют оператор SQL CREATE TABLE. Стоит отметить, что, когда вы используете интерактивный инструментарий, в действительности вся работа выполняется операторами SQL. Однако вам не приходится писать эти операторы; интерфейс создает и выполняет их незаметно для вас (то же самое справедливо и для процедуры изменения существующих таблиц).
Урок 18
Использование представлений
В этом уроке рассказывается о том, что такое представления, как они работают и когда их можно использовать. Вы узнаете также, как представления можно использовать для упрощения некоторых операций SQL, выполненных в прошлых уроках.
Что такое представления
Представления — это виртуальные таблицы. В отличие от таблиц, содержащих данные, представления содержат запросы, которые динамически выбирают данные, когда это необходимо.
Поддержка в MySQL
К моменту выхода этой книги СУБД MySQL еще не поддерживала представления (их поддержку планировалось осуществить в версии MySQL 5). Поэтому приведенные нами примеры в настоящее время работать не будут.
Лучший способ объяснить, что такое представления, — рассмотреть конкретный пример. Возвратимся к уроку 12, "Объединение таблиц", в котором был использован следующий оператор SELECT для выборки данных сразу из трех таблиц:
ВВОД
SELECT cust_name, cust_contact FROM Customers, Orders, Orderlteras WHERE Customers.oust id = Orders.cust id
Урок 19
Работа с хранимыми процедурами
В этом уроке вы узнаете, что такое хранимые процедуры, для чего и как они используются. Вы также познакомитесь с основами синтаксиса, используемого при создании и применении хранимых процедур.
Что такое хранимые процедуры
Большинство операций SQL, которые мы до сих пор выполняли, просты в том смысле, что в них применяется только один оператор по отношению к одной или нескольким таблицам. Но не все операции столь просты — зачастую приходится использовать несколько операторов для выполнения сложной операции. Например, рассмотрим следующие сценарии.
■ При обработке заказа бывает необходимо удостовериться в том, что соответствующие товары есть на складе.
■ Если товары есть на складе, они должны быть зарезервированы, чтобы их не продали кому-нибудь еще, а их количество, доступное другим покупателям, должно быть уменьшено соответственно изменившейся ситуации.
■ Товары, отсутствующие на складе, должны быть заказаны, для этого нужно связаться с их поставщиком.
■ Клиенту необходимо сообщить, какие товары есть на складе (и могут быть отгружены немедленно) и заказ на какие товары выполнен быть не может.
Урок 20
Обработка транзакций
В этом уроке вы узнаете, что такое транзакции и как использовать операторы COMMIT и ROLLBACK для их обработки.
Что такое обработка транзакций
Обработка транзакций обеспечивает сохранение целостности базы данных за счет того, что пакеты операций SQL выполняются полностью или не выполняются вовсе.
Как объяснялось в уроке 12, "Объединение таблиц", реляционные базы данных организованы таким образом, что информация в них хранится во многих таблицах. Благодаря этому облегчается манипулирование, управление данными, а также их повторное использование. Не вдаваясь в подробности, как и почему именно так устроены реляционные базы данных, следует заметить, что схемы всех хорошо спроектированных баз данных можно в какой-то степени отнести к реляционным.
Таблица Orders, которую мы использовали в последних 18-ти уроках, — хороший пример. Заказы хранятся в двух таблицах, в таблице Orderltems хранится информация об отдельных предметах заказов. Эти две таблицы связаны (соотнесены) между собой с помощью уникального идентификатора, который называется первичный ключ (см. урок 1, "Что такое SQL"). Эти таблицы, кроме того, связаны и с другими таблицами, содержащими информацию о клиентах и продуктах.
Процесс добавления нового заказа состоит в выполнении следующих этапов.
1. Проверка, содержится ли информация о клиенте в базе данных. Если нет, такая информация добавляется.
Урок 21
Использование курсоров
В этом уроке вы узнаете, что такое курсоры и как ими пользоваться.
Что такое курсоры
Операции выборки SQL работают с наборами строк, которые называются результирующие множества. Все возвращаемые строки являются строками, соответствующими примененному SQL-оператору, их может быть нуль пли больше. При использовании простых операторов SELECT невозможно получить первую строку, последнюю строку или предыдущие 10 строк. Это объясняется особенностями функционирования реляционной СУБД.
Результирующее множество
Результаты, возвращаемые в ответ на SQL-запрос.
Иногда бывает необходимо просмотреть строки в прямом или обратном направлении один или несколько раз. Именно для этого используются курсоры. Курсор представляет собой запрос к базе данных, хранящийся на сервере СУБД, — это не оператор SELECT, но результирующее множество, выборка, полученная в результате действия оператора SELECT. После того как курсор сохранен, приложения могут "прокручивать" (просматривать) данные в прямом или обратном направлении, как только возникает такая потребность.
Урок 22
Расширенные возможности SQL
В этом уроке мы рассмотрим несколько расширенных возможностей манипулирования данными: ограничения, индексы и триггеры.
Что такое ограничения
Было разработано много версий языка SQL, прежде чем он стал столь полноценным и мощным. Многие из наиболее эффективных инструментов манипуляции с данными основаны на таких методах, которые обеспечиваются с помощью ограничений.
И реляционные таблицы, н целостность на уровне ссылок несколько раз упоминались в предыдущих уроках. В них, в частности, говорилось, что реляционные базы данных хранят данные во многих таблицах, каждая из которых содержит данные, связанные с данными из других таблиц.
Для создания ссылок из одной таблицы на другие используются ключи (отсюда термин целостность на уровне ссылок).
Чтобы реляционная база данных работала должным образом, необходимо удостовериться в том, что данные в ее таблицы введены правильно. Например, если в таблице Orders хранится информация о заказе, а в Orderltems — его детальное описание, вы должны быть уверены, что все идентификаторы заказов, упомянутые в таблице Orderltems, существуют и в таблице Orders. Аналогично, каждый клиент, упомянутый в таблице Orders, не должен быть забыт и в таблице Customers.
Хотя вы можете проводить соответствующие проверки, прежде чем вводить новые строки (выполняя оператор