Базы данных. Вводный курс


Формальные определения - часть 3


SELECT * FROM T UNION ALL SELECT * FROM X1;

  • Для соединений вида RIGHT OUTER JOIN пусть S обозначает набор строк, являющийся результатом выражения запросов

    SELECT * FROM T UNION ALL SELECT * FROM X2;

  • Для соединений вида FULL OUTER JOIN пусть S обозначает набор строк, являющийся результатом выражения запросов

    SELECT * FROM T UNION ALL SELECT * FROM X1 UNION ALL SELECT * FROM X2;

  • Для соединений вида UNION JOIN пусть S обозначает набор строк, являющийся результатом выражения запросов

    SELECT * FROM X1 UNION ALL SELECT * FROM X2;

  • Если в спецификации вида соединения присутствуют ключевые слова NATURAL или USING, то результат операции совпадает с результатом выражения запросов

    SELECT SLCC, SLT1, SLT2 FROM S;

  • Во всех остальных случаях результат операции совпадает с S.

      Интересно, что для этого запроса возможна альтернативная формулировка с использованием операции CROSS JOIN: SELECT * FROM table1 CROSS JOIN table2. Может возникнуть естественный вопрос: зачем вводить специальную конструкцию для декартова произведения? По мнению автора, эта конструкция была введена, главным образом, для повышения уровня общности языка SQL. Кроме того, использование явного ключевого слова CROSS JOIN является подтверждением того, что пользователь действительно может получить декартово произведение, а не упустил по ошибке раздел WHERE.

      Для удобства читателей напомним, что по определению выражение COALESCE (V1, V2) эквивалентно следующему выражению с переключателем: CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2 END.

      Совпадают в строгом смысле, т.е. значение столбца table1.c совпадает со значением столбца table2.c тогда и только тогда, когда значением операции сравнения table1.c = table2.c является true.




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