- •Языки баз данных Структурированный язык запросов sql
- •Создание таблицы
- •Итоговые запросы
- •Отбор строк с использованием условий поиска
- •Запросы с группировкой
- •Сортировка таблицы результатов запроса
- •Внесение изменений в бд
- •Операторы добавления, изменения и удаления данных:
- •Values ('Кондратенко а. В.', 321);
- •Вложенные запросы
Вложенные запросы
Вложенный запрос (подзпрос) – запрос позволяющий использовать результат одного запроса в качестве составной части другого запроса.
1. Вывести список товаров, имеющих цену меньше средней.
SELECT Nkod, Cnaim, Nsort FROM Tovary
WHERE Nzena < (SELECT AVG(Nzena) FROM Tovary);
Вложенный запрос это оператор SELECT заключенный в скобки. Вложенные SQL-запросы являются частью предложения WHERE или HAVING.
Ограничения на SELECT во вложенном запросе:
-
Таблица результатов вложенного запроса всегда состоит из одного столбца.
-
Во вложенный запрос не может входить предложение ORDER BY
-
Вложенный запрос не может быть запросом на объединение нескольких различных операторов SELECT, допускается использование только одного оператора SELECT.
Подзапросы со следующими условиями поиска:
-
Сравнением с результатом вложенного запроса. Сравнивается (6операций сравнения) значение выражения с одним значением, возвращенным вложенным запросом. (см. 1)
-
проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращенного вложенным запросом
Пример: выбираем товары, купленные за наличный расчет
SELECT Cnaim FROM Tovary
WHERE Nkod IN (SELECT Nkod FROM Pokup
WHERE Cvid LIKE 'наличный');
-
Проверка на существование проверяет наличие строк в таблице результатов вложенного запроса.
EXISTS означает примерно "если подмножество не пусто", соотвественно NOT EXISTS означает "если подмножество пусто". Условие поиска EXISTS не использует результаты вложенного расчета, а проверяет только наличие результатов.
SELECT * FROM Tovary
WHERE exists (SELECT * FROM Pokup
WHERE Tovary.nkod=Pokup.nkod and ntov<>0);