- •Базы данных Лабораторная работа № 4 Подчиненные запросы
- •Пример 1. Использование подзапроса с проверкой на равенство
- •Пример 2. Использование подзапросов с групповыми функциями
- •Пример 3. Вложенные подзапросы с использованием предложения in
- •Ключевые слова any и all
- •Пример 4. Использование ключевых слов any или some
- •Пример 5. Использование ключевого слова all
- •Предложения exists и not exist
- •Пример 6. Использование ключевого слова exists
Базы данных Лабораторная работа № 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
