Введение в стандарты языка баз данных SQL


Подзапросы


В стандарте SQL/92 специфицированы три вида подзапросов: скалярный, строчный и табличный. Скалярный подзапрос выдает одно значение некоторого типа; строчный подзапрос выдает одну строку; табличный подзапрос выдает таблицу. В основе каждого вида подзапроса лежит табличное выражение. Синтаксически соответствующие конструкции определяются следующими правилами:

<scalar subquery> ::= <subquery> <row subquery> ::= <subquery> <table subquery> ::= <subquery> <subquery> ::= <left paren> <query expression> <right paren>

Пояснения:

  1. Степень скалярного подзапроса должна быть равна 1.
  2. Степень строчного подзапроса должна быть больше 1.
  3. Тип данных скалярного подзапроса совпадает с типом данных соответствующего столбца выражения запросов.
  4. Типы данных столбцов строчного или табличного подзапроса совпадают с типами данных соответствующих столбцов выражения запросов.
  5. Если мощность скалярного или строчного подзапроса больше 1, то возбуждается исключительное условие.

Теперь мы в состоянии привести синтаксические определения и соответствующие пояснения по поводу выражения запросов:

<query expression> ::= <non-join query expression> |<joined table> <non-join query expression> ::= <non-join query term> |<query expression> UNION [ ALL ] [ <corresponding spec> ] |<query term> <query expression> EXCEPT [ ALL ] [ <corresponding spec> ] <query term> <query term> ::= <non-join query term> |<joined table> <non-join query term> ::= <non-join query primary> |<query term> INTERSECT [ ALL ] [ <corresponding spec> ] <query primary> <query primary> ::= <non-join query primary> |<joined table> <non-join query primary> ::= <simple table> |<left paren> <non-join query expression> <right paren> <simple table> ::= <query specification> |<table value constructor> |<explicit table> <explicit table> ::= TABLE <table name> <corresponding spec> ::= CORRESPONDING [ BY <left paren> <corresponding column list> <right paren> ] <corresponding column list> ::= <column name list>




Начало  Назад  Вперед