SQL1

       

SELECT (ВЫБОР)


Синтаксис

SELECT { IDISTINCT | ALL] <value expression> . , . . } / *

[INTO <host variable list> (*только внедрённый*)]

FROM <table reference> . , . .

[WHERE <predicate>]

[GROUP BY <grouping column> . , . .]

[HAVING <predicate>]

[ORDER BY <ordering column> [ASC | DESC] . , . . ];

Это предложение организует запрос и выводит значения из базы данных (см. Главы 3 - 14 ).

Применяются следующие правила:

  • Если ни ALL, ни DISTINCT не указаны, принимается ALL.
  • Выражение <value expression> состоит из <column spec>, агрегатной функции <aggregate funct>, нестандартной функции <nonstandard function>, постоянной <constant> или любой их комбинации с операторами в допустимых выражениях.
  • Таблица, на которую ссылаются, <table reference>, состоит из имени таблицы, включая префикс владельца, если текущий пользователь не владелец, или синоним (нестандартно) таблицы. Таблица может быть или базовой таблицей, или просмотром. В принципе псевдоним может указать, какой синонимом используется для таблицы, только на время текущей команды. Имя таблицы или синоним должны отделяться от псевдонима одним или более разделителями <separator>.
  • Если используется GROUP BY, все столбцы <column spec>, используемые в предложении SELECT, должны будут использоваться как группа столбцов <grouping column>, если они не содержатся в агрегатной функции <aggregate funct>. Вся группа столбцов <grouping column> должна быть представлена среди выражений <value expressions>, указанных в предложении SELECT. Для каждой отдельной комбинации значений группы столбцов <grouping column> будет иметься одна, и только одна, строка вывода.
  • Если HAVING используется, предикат <predicate> применяется к каждой строке, произведённой предложением GROUP BY, и те строки, которые сделают этот предикат верным, будут выведены.
  • Если ORDER BY используется, вывод имеет определенную последовательность. Каждый идентификатор столбца <column identifer> ссылается на указанное <value expression> в предложении SELECT. Если это <value expression> является указанным столбцом <column spec>, <column identifier> может быть таким же, как <column spec>. Иначе <column identifier> может быть положительным целым числом, указывающим место, где находится <value expression> в последовательности предложения SELECT. Вывод будет сформирован так, чтобы помещать значения, содержащиеся в <column identifier>, в порядке возрастания, если DESC не указан. Имя идентификатора столбца <column identifier>, стоящее первым в предложении ORDER BY, будет предшествовать позже стоящим именам в определении последовательности вывода.
  • Предложение SELECT оценивает каждую строку-кандидат таблицы, в которой строки показаны независимо.


    Строка-кандидат определяется следующим образом:

  • Если только одна ссылаемая таблица <table reference> включена, каждая строка этой таблица в свою очередь является строкой-кандидатом.


  • Если более одной ссылаемой таблицы <table reference> включено, каждая строка каждой таблицы должна быть скомбинирована, в свою очередь, с каждой комбинацией строк из всех других таблиц. Каждая такая комбинация будет, в свою очередь, строкой-кандидатом.


  • Каждая строка-кандидат производит значения, которые делают предикат <predicate> в предложении WHERE верным, неверным, или неизвестным. Если GROUP BY не используется, каждое <value expression> применяется, в свою очередь, для каждой строки-кандидата, чьё значение делает предикат верным, и результатом этой операции является вывод.

    Если GROUP BY используется, строки-кандидаты комбинируются, используя агрегатные функции. Если никакого предиката <predicate> не установлено, каждое выражение <value expression> применяется к каждой строке-кандидату или к каждой группе. Если указан DISTINCT, дубликаты (двойники) строк будут удалены из вывода.


    Содержание раздела