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



         

Соединенные таблицы


Конструкция соединенной таблицы - это альтернативный способ порождения новой таблицы на основе использования ранее определенных таблиц (базовых, представляемых или порожденных). Для этой конструкции аналоги в SQL/89 отсутствуют. Фактически соединенная таблица вносит алгебраический стиль в формулировки запросов на языке SQL. Формально соединенная таблица определяется следующими синтаксическими правилами:

<joined table> ::= <cross join> |<qualified join> |<left paren> <joined table> <right paren> <cross join> ::= <table reference> CROSS JOIN <table reference> <qualified join> ::= <table reference> [ NATURAL ] [ <join type> ] JOIN <table reference> [ <join specification> ] <join specification> ::= <join condition> |<named columns join> <join condition> ::= ON <search condition> <named columns join> ::= USING <left paren> <join column list> <right paren> <join type> ::= INNER |<outer join type> [ OUTER ] |UNION <outer join type> ::= LEFT |RIGHT |FULL <join column list> ::= <column name list>

Поскольку раньше мы не встречались с подобными конструкциями, приведем сравнительно подробные объяснения. Предположим, что соединяются таблицы T1 и T2. Пусть CP обозначает их расширенное Декартово произведения: CP = SELECT * FROMT1, T2.

  1. Если специфицировано квалифицированное соединение (qualifiedjoin), то

      (a) если указано NATURAL (естественное соединение), то спецификация соединения (joinspecification) должна отсутствовать;

      (b) если указано UNION (объединение), то должны отсутствовать и спецификация соединения, и NATURAL;

      (c) в противном случае спецификация соединения должна присутствовать.

  2. Если специфицировано квалифицированное соединение, и не указан тип соединения (jointype), то неявно предполагается внутреннее (INNER) соединение.
  3. Если специфицировано квалифицированное соединение с условием соединения (joincondition), то




      Содержание  Назад  Вперед