Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD.doc
Скачиваний:
14
Добавлен:
27.09.2019
Размер:
411.14 Кб
Скачать

32.Дополнительные возможности использования подзапросов, возвращающих единичные значения.

33.Дополнительные возможности использования подзапросов, возвращающих множество значений.

На языке SQL это решение будет выглядеть в виде двух запросов, при этом один из запросов будет вложен в другой запрос. Запрос находящийся внутри другого запроса называется –  подзапросом.  Подзапрос   возвращает   значение , которое будет использоваться в основном запросе.  Использования   подзапросов , есть  использования  по очереди двух запросов, сперва получаем данные из  подзапроса , а затем используем эти данные в качестве данных основного запроса.

Синтаксис и свойства подзапросов

Синтаксис простого  подзапроса  выглядит так:

 SELECT select_list

FROM table

WHERE expr operator

(SELECT select_list

FROM table)

Здесь в качестве оператора может играть роль такие операторы сравнения как >;>=;<;<=;OR;IN при работе с запросами возвращающие ровно одно  значение , а также для решения задач запросами возвращающие  множество  строк используйте в качестве операторов IN; ANY; ALL.

При этом сперва выполняется  подзапрос  (внутренней запрос), а результат операции будет передан основному запросу.  Подзапрос  – есть операция SELECT которая передает свое  значения  другому основному запросу. При этом  возможности   подзапроса  велики, поэтому  использования   подзапросов  открывает перед вами большие  возможности . При этом возможно использовать  подзапросы  в следующих частях оператора SELECT:

 

  • В разделе SELECT

  • В качестве таблицы в разделе FROM

  • В разделе WHERE

  • В условиях HAVING

  • В разделе ORDER BY

 Рассмотрим список правил, которые необходимо соблюдать во время построение  подзапроса :

  Подзапрос  должен быть включен внутрь круглых скобок

  •  Подзапрос  необходимо ставить правую часть от оператора сравнения

  • Необходимости в упорядочения вывода  подзапроса  нет необходимости за исключением случаев когда необходимо получить запроса типа Топ – n

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

Типы подзапросов

Как уже вы наверное поняли из описания  подзапросов  существует два типа  подзапросов :

  •  Подзапросы  возражающие один результат

  •  Подзапросы  возражающие  множество  строк в качестве результата.

 Схема  подзапроса  возражающей одно  значение :

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

Подзапросы возражающие один результат

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

Оператор

 Значение 

 

 

=

равно

>

больше

<

меньше

>=

больше или равно

<=

меньше или равно

<>

не равно

!=

не равно

 

Пример запроса – вывести всех сотрудников, чьи зарплаты больше зарплаты сотрудника SMITH :

 

SELECT *

FROM emp

WHERE sal > (SELECT sal

FROM emp

WHERE ename = 'SMITH')

Мы рассмотрели простой пример  подзапроса , немного усложним логику запроса и получим:

SELECT *

FROM emp

WHERE job = (SELECT job

FROM emp

WHERE ename = 'SMITH')

AND   sal >  (SELECT MIN (sal)

FROM emp)

Как можно заметить из примера в запросе можно использовать несколько  подзапросов . В таком случаи результат будет получен сперва из  подзапросов  по очереди, а затем все данные полученные из  подзапросов  будут проставлены в качестве  значений  в основной запрос.

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