INSERT INTO tab15 VALUES (1001,”Macintosh”,30000.00,2)
С помощью данного SQL-запроса в таблицу tab15также добавляется новая строка, содержащая информацию о товаре «Macintosh».
Отсутствие полей эквивалентно перечислению списка всех полей таблицы в порядке слева направо так, как они были определены при создании таблицы.
Целостность
Целостность - самое важное требование, предъявляемое к базам данных. Для связи таблиц в реляционных базах данных используются совпадающие поля. Например, в таблицах CUSTOMER и ORDSALE связь осуществляется по полю CUSTOMERNO. Наименования совпадающих полей могут и не совпадать, но они должны иметь одинаковый тип. Нарушение целостности возникает в том случае, когда таблица ORDSALE содержит номера покупателей, которых нет в таблице CUSTOMER. Для проверки целостности данных при добавлении в таблицу ORDSALE информации об отпуске товаров можно проверить, имеется ли указанный покупатель в таблице CUSTOMER. Более правильным является использование первичных и внешних ключей таблиц, которые автоматически отслеживают целостность данных.
Для создания первичных и внешних ключей можно использовать команду CREATE TABLE а также команду ALTER TABLE. Приведем синтаксис команды ALTER TABLE:
ALTER TABLE имя таблицы
ADD PRIMARY KEY(имя поля, имя поля ...)
ADD FOREIGN KEY имя внешнего ключа
(имя поля, имя поля ...)
REFERENCES имя ссылочной таблицы
[ON DELETE
RESTRICT çCASCADE çSET NULL]
Для обеспечения целостности покупателей в базе данных создадим первичный ключ для таблицы CUSTOMER и внешние ключи для всех таблиц, которые содержат код покупателя:
ALTER TABLE CUSTOMER
ADD PRIMARY KEY(CUSTOMERNO)
ALTER TABLE ORDSALE
ADD FOREIGN KEY CUSTNO (CUSTOMERNO)
REFERENCES CUSTOMER
ON DELETE RESTRICT
Если указан параметр RESTRICT, то удалить покупателя в таблице CUSTOMER можно только в том случае, если он не указан ни в какой другой таблице, имеющей ссылку на таблицу CUSTOMER. В этом случае для удаления покупателя из таблицы CUSTOMER предварительно необходимо удалить все записи в таблице все записи в таблице ORDSALE, содержащие ссылки на этот номер покупателя. В некоторых случаях желательно, чтобы удаление главной таблицы приводило к удалению подчиненных. Для этого используется фраза: ON DELETE CASCADE.
Задания:
1. Составить запрос для модификации одной записи.
2. Составить запрос для модификации всех записей таблицы.
Задания (повышенный уровень)
3.Составить запросы с операторами RESTRICT и CASCADE.
Вопросы. Базовый уровень
1.Каким образом составить запрос, чтобы при удалении записи из главной таблицы согласованно удалялись связанные записи из подчиненных таблиц?
2. Каким образом составить запрос, чтобы удаление записи из главной таблицы не приводило к удалению связанных записей из подчиненных таблиц?
Повышенный уровень
13.3. Для чего используются операторы RESTRICT и CASCADE?
Занятие 6. Объединение, пересечение и разность отношений. Операторы UNION, INTERSECT, EXEPT
Цель занятия: изучение синтаксиса теоретико-множественных операций.
Теоретическое обоснование
Объединение множеств
Объединением двух множеств называется множество всех элементов, принадлежащих какому-либо одному или обоим множествам. Поскольку отношение является множеством записей, то можно построить объединение двух отношений. Результатом будет отношение, состоящее из всех строк, входящих в какое-либо одно или в оба сразу отношения. Однако строки этих двух отношений должны быть совместимы по объединению.
В языке SQL две таблицы совместимы по объединению и к ним может быть применен оператор объединения UNION тогда и только тогда, когда:
1) они имеют одинаковое число полей, например m;
2) для всех i ( ) i-е поле первой таблицы и i-е поле второй таблицы имеют в точности одинаковый тип данных.
В SQL-92 реализованы некоторые операции реляционной алгебры в явном виде с помощью операторов: UNION, Intersect, EXCEPT, JOIN.
По отношению к таблицам операторы объединения (UNION), пересечения (Intersect) и разности (EXCEPT) можно применять только в случае объединительной совместимости.
Пример. SQL-запрос
SELECT kod FROM tab12 WHERE UNITPRICE>1000
UNION
SELECT kod FROM tab13 WHERE CUSTOMERNO=23
предназначен для выбора кодов товаров, которые имеют стоимость более 1000, либо приобретаются покупателем с кодом 23 (либо и то, и другое).
Использование оператора UNION исключает из результатов выборки повторяющиеся значения. Если это не устраивает пользователя, то вместо оператора UNION используют UNION ALL.Тогда повторы не будут исключены из выборки.
Оператором UNION можно соединить любое количество конструкций SELECT.
Пример. С помощью SQL-запроса
SELECT kod FROM tab12 WHERE UNITPRICE>1000
UNION
SELECT kod FROM tab13 WHERE CUSTOMERNO=23
UNION
SELECT kod FROM tab12 WHERE UNITPRICE< 500
пользователь может получить информацию о кодах товаров, которые имеют стоимость более 1000, либо приобретены покупателем с кодом 23, либо имеют цену менее 500.
Если к запросу, приведенному в примере 1, добавить строку OR UNITPRICE < 500, то его результирующая таблица будет аналогична результирующей таблице, соответствующей запросу 2.
Оператор ORDER BY в запрос с использованием оператора UNION может входить только в последнее предложение SELECT. При использовании критерия упорядочивания используются номера полей результирующей таблицы. Пример с включением константы в результирующую таблицу:
SELECT kod,”Стоимость товара >1000$” FROM tab12
WHERE UNITPRICE>1000
UNION