Главная » Microsoft SQL Server, Базы данных » Методы и расположение

0

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

При создании подзапроса возможны три основные формы, в зависимости от необходимых данных и предпочитаемого вами синтаксиса.

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


Таблица 10.1. Использование подзапросов и общих табличных выражений

Подзапрос возвращает

Выражение

Список

Набор данных

Элемент инструкции

Подзапрос возвращает

Подзапрос возвращает

Подзапрос возвращает

SELECT

скалярное значение

список значений

источник данных с мно

select (подзапрос)

Результат подзапроса ис

X

жеством столбцов X

FROM (ИСТОЧНИК ДЭН-

ных)

Это единственное ме

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

Набор данных подзапроса

Набор данных подзапроса

Набор данных подзапро

сто, где подзапрос мо

трактуется как управляе

трактуется как управляе

са трактуется как управ

жет использовать псев

мая таблица во внешнем

мая таблица во внешнем

ляемая таблица во внеш

доним таблицы или

запросе

запросе

нем запросе

именованный диапазон WHERE X { = , >, <, >=, < = , <>} (подзапрос)

WHERE X IN

Предложение where истинно, если тестовое значение совпадает с возвращенным подзапросом

Условие WHERE истинно,

Условие WHERE истинно,

X

(подзапрос)

если тестовое значение

если тестовое значение

WHERE EXISTS

совпадает с возвращенным подзапросом

Условие WHERE истинно,

находится в списке, возвращенном подзапросом

Условие WHERE истинно,

Условие WHERE истинно,

(подзапрос)

если подзапрос возвра

если подзапрос возвра

если подзапрос возвра

щает хотя бы одну строку

щает хотя бы одну строку

щает хотя бы одну строку

?               Общие табличные выражения (СТЕ). Являются синтаксическими вариациями простых подзапросов, аналогичны представлениям и определяют подзапрос в начале запроса с помощью команды WITH. К СТЕ можно обращаться множество раз в основном запросе, как к представлению или управляемой таблице.

Общие табличные выражения были впервые введены в версии SQL Server 2005. Новинка ^ Их главной Целью является создание рекурсивных запросов. Подробно мы рас-

2005     смотрим их в главе 12.

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

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии