Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
24.77 Кб
Скачать

Базы данных Лабораторная работа № 4 Подчиненные запросы

<Перейти к предыдущей работе Перейти к следующей работе>

Перейти к заданию

Подчиненным называется запрос, содержащийся в предложении WHERE и HAVING другой инструкции SQL. Подчиненные запросы позволяют естественным образом обрабатывать запросы, выраженные через результаты других запросов. Внешняя инструкция SELECT использует результат выполнения внутренней инструкции для определения содержания окончательного результата всего запроса. Внутренние запросы могут находиться в составе предложений WHERE и HAVING внешней инструкции SELECT.

Подзапрос представляет собой инструмент создания временной таблицы, содержимое которой использует внешний запрос. Подзапрос, можно указывать непосредственно после операторов сравнения (=, <, >, <=, >=, <>) в конструкции WHERE или HAVING. Текст подзапроса должен быть заключен в круглые скобки.

Существуют три типа подзапросов:

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

  • Строковый подзапрос возвращает значения одного столбца таблицы в виде множества строк. Строковый подзапрос может использоваться везде, где применяется конструктор строковых значений.

  • Табличный подзапрос возвращает значения одного или нескольких столбцов таблицы, размещенные в более чем одной строке. Табличный подзапрос можно использовать везде, где допускается указывать таблицу.

К подзапросам применяются следующие правила и ограничения.

  • В подзапросе не должна быть использована конструкция упорядочения результатов ORDER BY, хотя она может присутствовать во внешней инструкции SELECT.

  • Список выборки SELECT подзапроса должен состоять из имен отдельных столбцов или составленных из них выражений, за исключением случая, когда в подзапросе используется ключевое слово EXISTS.

  • По умолчанию имена столбцов в подзапросе относятся к таблице, имя которой указано в конструкции FROM подзапроса. Однако можно ссылаться и на столбцы таблицы, указанной в конструкции FROM внешнего запроса, для чего используются уточненные имена столбцов.

Пример 1. Использование подзапроса с проверкой на равенство

Получите имена и фамилии сотрудников, работающих в той же стране, что и Ann Bennet.

Данные о сотрудниках находятся в таблице employee. Внутренняя инструкция предназначена для определения страны. Существует только одна такая страна, поэтому данный пример является примером скалярного подзапроса. Иначе говоря, внутренняя инструкция SELECT возвращает таблицу, состоящую из единственного значения. Оно представляет собой название той страны, в которой работает указанный сотрудник.

SELECT job_country FROM employee    WHERE first_name = 'Ann' AND last_name = 'Bennet'

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

SELECT first_name, last_name, job_country   FROM employee   WHERE job_country = (SELECT job_country FROM employee     WHERE first_name = 'Ann' AND last_name = 'Bennet')

FIRST_NAME   LAST_NAME   JOB_COUNTRY ==========   =========   =========== Ann          Bennet      England     Roger        Reeves      England     Willie       Stansbury   England   

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]