Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
23.11.2017
Размер:
96.26 Кб
Скачать

10.4. Условия поиска с вложенным запросом

Вложенный запрос всегда является частью условия поиска в предложении WHERE или HAVING. Возможны следующие условия поиска с вложенным запросом:

  1. сравнение с результатом вложенного запроса. Сравнивает значение выражения с одним значением, возвращённым вложенным запросом.

проверяемое выражение

вложенный запрос

=

<>

<

<=

>

>=

  1. проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращённого вложенным запросом.

IN

NOT

Пример запроса: вывести список квартир, в которых не установлены телефоны:

SELECT*FROM FLAT

WHERE ADR NOT IN (SELECT ADR FROM TPHONE)

  1. проверка на существование. Проверяет наличие строк в таблице результатов вложенного запроса.

вложенный запрос

EXISTS

NOT

Пример запроса: вывести список жителей, имеющих источник дохода с размером большим 100 руб.:

SELECT * FROM PERSON

WHERE EXIST (SELECT * FROM PROFIT, HAVE_D

WHERE PERSON.NOM=HAVE_D.NOM

AND PROFIT.ID=HAVE_D.ID

AND PROFIT. MONEYS>100)

Обратите внимание на то, что условие поиска EXISTS не использует результаты вложенного запроса. Проверяется только наличие результатов. По этой причине в SQL смягчается правило о единственности возвращаемого столбца во вложенном запросе и во вложенном запросе при проверке EXISTS допускается использование формы SELECT*;

  1. многократное сравнение. Сравнивает значение выражения с каждым из значений множества, возвращаемого вложенным запросом.

проверяемое выражение

вложенный запрос

=ANY

<> ALL

<

<=

>

>=

При проверке ANY проверяемое значение поочерёдно сравнивается с каждым значением, содержащимся в столбце, который сформулирован вложенным запросом. Если любое из этих сравнений даёт результат TRUE, то проверка ANY возвращает значение TRUE.

При проверке ALL проверяемое значение поочерёдно сравнивается с каждым значением, содержащимся в столбце. Если все сравнения дают результат TRUE, то проверка ALL возвращает значение TRUE.

Вопросы для самоконтроля

  1. Для чего предназначена агрегатная функция AVG( )? Приведите правила записи аргумента.

  2. Для чего предназначена агрегатная функция SUM( )? Приведите правила записи аргумента.

  3. Для чего предназначена агрегатная функция MIN( )? Приведите правила записи аргумента.

  4. Для чего предназначена агрегатная функция MAX( )? Приведите правила записи аргумента.

  5. Для чего предназначена агрегатная функция COUNT( )? Приведите правила записи аргумента.

  6. Для чего предназначена агрегатная функция COUNT(*)?

  7. Для учебной БД напишите запрос, вычисляющий среднедушевой налог.

  8. Для учебной БД напишите запрос, вычисляющий сумму доходов, полученных жителями от источника с названием "Стипендия".

  9. Для учебной БД напишите запрос, определяющий даты рождения самого молодого и самого старого жителя.

  10. Для учебной БД напишите запрос, определяющий количество источников дохода, реально используемых жителями.

  11. Для учебной БД напишите запрос, определяющий количество жителей, имеющих источники дохода.

  12. Для учебной БД напишите запрос, определяющий количество источников дохода у жителя с номером 222.

  13. Какой запрос называется запросом с группировкой?

  14. Какие столбцы называются столбцами группировки?

  15. Как изменяется действие агрегатных функций в запросах с группировкой по сравнению с обычным итоговым запросом?

  16. Перечислите требования к столбцам группировки.

  17. Что может быть элементом списка возвращаемых столбцов в запросе с группировкой?

  18. В каком предложении записывается условие поиска групп?

  19. Что можно использовать в условии поиска групп для запроса с группировкой?

  20. Для учебной БД напишите запрос, определяющий количество жителей в каждой квартире.

  21. Какой запрос называется вложенным?

  22. Перечислите особенности вложенного запроса.

  23. Что называется внешней ссылкой во вложенном запросе?

  24. Какой вложенный запрос называется связанным подзапросом?

  25. Укажите особенность связанного подзапроса.

  26. Для учебной БД напишите запрос, формирующий список самых молодых жителей.

Соседние файлы в папке БД лабы