Общая форма оператора SELECT
SELECT [DISTINCT] список_выражений|*
[INTO новая_таблица]
[FROM объединение_источников]
[WHERE условие]
[GROUP BY список_столбцов]
[HAVING условие]
[UNION [ALL] SELECT …]
[ORDER BY список_столбцов]
Некоторые входящие в состав оператора предложения были рассмотрены
ранее на простых примерах. Ниже будут показаны более сложные конструкции.
Необязательное ключевое слово DISTINCT отвечает за то, чтобы в резуль-
тирующем наборе не было полностью совпадающих строк (записей). Повто-
ряющиеся строки будут исключены.
Вложенные запросы в предложении FROM. В операторе SELECT в
предложении FROM перечисляются имена таблиц или запросов, которые яв-
ляются источниками данных для этого запроса.
Пример 1.9.
SELECT Клиент.Фамилия, Подписка.Журнал
FROM Клиент, Подписка
…
Таблицы постоянно хранят данные, а запросы формируют временные ре-
зультирующие наборы в форме таблиц в соответствии с определенными крите-
риями отбора.

С точки зрения использования в качестве источников данных при составле-
нии запроса, нет разницы между запросами и «постоянными» таблицами. В
языке SQL есть возможность не только обращаться по имени к созданным ра-
нее объектам – запросам, но и определять «вложенные» («подчиненные») за-
просы непосредственно внутри основного запроса.
Пример 1.10 (один из источников данных – вложенный запрос).
SELECT Клиент.Фамилия, Подписка2.Журнал
FROM Клиент, (SELECT * FROM Подписка) AS Подписка2
…
Ключевое слово «AS» задает имя (псевдоним), по которому следует обра-
щаться к полям временной таблицы, сформированной вложенным запросом, в
пределах «главного» запроса.
Результаты работы запросов в первом и втором примерах идентичны. Вло-
женный запрос в данном случае не имеет практического смысла. Однако вло-
женные запросы могут иметь и более сложную структуру, и в некоторых си-
туациях необходимы.
Вложенные запросы, в свою очередь, также могут содержать внутри себя
вложенные запросы.
Пример 1.11 (трехуровневый запрос, действует аналогично двум предыду-
щим).
SELECT Клиент.Фамилия, Подписка2.Журнал
FROM Клиент, (SELECT * FROM
(SELECT * FROM Подписка)
AS) Подписка2
…
В операторе «SELECT», применяемом при создании вложенных запросов,
могут быть использованы любые предложения, как и в операторах верхнего
уровня («FROM», «WHERE», «GROUP BY», «ORDER BY» …).
Действующий пример с использованием вложенного запроса будет приве-
ден ниже.
Вложенные запросы в предложении WHERE. Вложенные запросы могут
быть использованы не только в качестве источников данных, но и в предложе-
нии WHERE, при определении ограничений результирующего набора.
Пример 1.12. Пусть существует таблица