Пример 7.18. Определение списка имеющихся на складе товаров.
Использование операций EXISTS и NOT EXISTS
Пример 7.17. Определение фирм, в сделках которых количество товара превышает такой же показатель хотя бы в одной сделке клиентов из Самары.
Пример 7.16. Определение фирмы, которая приобрела товаров на самую большую сумму.
Вложенный подзапрос подсчитывает общую стоимость покупок каждого клиента. Внешний подзапрос также подсчитывает общую стоимость покупок каждого клиента и определяет тех, для кого эта сумма, по сравнению с другими покупателями, оказалась больше или точно такой же.
Пример 7.17. Найти фирмы, в сделках которых количество товара превышает такой же показатель хотя бы в одной сделке клиентов из Самары.
SELECT Клиент.Фирма, Сделка.Количество
FROM Клиент INNER JOIN Сделка
ON Клиент.КодКлиента=Сделка.КодКлиента
WHERE Сделка.Количество>
ANY(SELECT Сделка.Количество
FROM Клиент INNER JOIN Сделка
ON Клиент.КодКлиента=Сделка.КодКлиента
WHERE Клиент.ГородКлиента='Самара')
Ключевые слова EXISTS и NOT EXISTS предназначены для использования только совместно с подзапросами. Результат их обработки представляет собой логическое значениеTRUE или FALSE. Для ключевого слова EXISTS результат равен TRUE в том и только в том случае, если в возвращаемой подзапросом результирующей таблице присутствует хотя бы одна строка. Если результирующая таблица подзапроса пуста, результатом обработки операции EXISTS будет значение FALSE. Для ключевого слова NOT EXISTSиспользуются правила обработки, обратные по отношению к ключевому слову EXISTS . Поскольку по ключевым словам EXISTS и NOT EXISTS проверяется лишь наличие строк в результирующей таблице подзапроса, то эта таблица может содержать произвольное количество столбцов.
Пример 7.18. Определить список имеющихся на складе товаров (запрос эквивалентен примеру 7.7).
SELECT Название
FROM Товар
WHERE EXISTS (SELECT КодТовара
FROM Склад
WHERE Товар.КодТовара=Склад.КодТовара)
Пример 7.19. Определить список отсутствующих на складе товаров (запрос эквивалентен примеру 7.8).
SELECT Название
FROM Товар
WHERE NOT EXISTS (SELECT КодТовара
FROM Склад
WHERE Товар.КодТовара=Склад.КодТовара)
Лекция 8: Запросы модификации данных Рассматриваются запросы модификации данных в реляционной таблице: вставка отдельной записи INSERTѕ VALUESѕ или группы записей из имеющейся таблицы INSERTѕ SELECTѕ, удаление записей по условию DELETE, изменение записей по условию UPDATE. Вводится понятие целостности данных. Определяются целостность сущностей и ссылочная целостность.
Язык SQL ориентирован на выполнение операций над группами записей, хотя в некоторых случаях их можно проводить и над отдельной записью.
Запросы действия представляют собой достаточно мощное средство, так как позволяют оперировать не только отдельными строками, но и набором строк. С помощьюзапросов действия пользователь может добавить, удалить или обновить блоки данных. Существует три вида запросов действия: