Введение в модель данных SQL


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


SELECT SLCC, SLT1, SLT2 FROM table1, table2;

  • Набор строк результата (множество или мультимножество) определяется по следующим правилам. Обозначим через T следующие наборы строк:
    • если видом соединения является UNION JOIN, то T - пусто;
    • если видом соединения является CROSS JOIN, то T включает все строки, входящие в CP;
    • если в спецификацию вида соединения входит раздел ON, то T включает все строки CP, для которых результатом вычисления условного выражения является true;
    • если в спецификацию вида соединения входят разделы NATURAL или USING, и список SLCC не является пустым, то T включает все строки CP, для которых значения соответствующих столбцов соединения совпадают;5)
    • если в спецификацию вида соединения входят разделы NATURAL или USING, и список SLCC является пустым, то T включает все строки CP.
    • Обозначим через P1 (P2) набор (множество или мультимножество) всех строк таблицы table1 (table2), каждая из которых участвует в образовании некой строки T.
    • Обозначим через U1 (U2) набор (множество или мультимножество) всех строк таблицы table1 (table2), ни одна из которых не участвует в образовании какой-либо строки T.
    • Обозначим через X1 набор (множество или мультимножество) всех строк, образуемых из строк набора U1 путем добавления справа подстроки из неопределенных значений, содержащей столько неопределенных значений, сколько столбцов содержит таблица table2. Обозначим через X2 набор (множество или мультимножество) всех строк, образуемых из строк набора U2 путем добавления слева подстроки из неопределенных значений, содержащей столько неопределенных значений, сколько столбцов содержит таблица table1.
    • Для соединений вида CROSS JOIN и INNER JOIN пусть S обозначает тот же набор строк, что и T.
    • Для соединений вида LEFT OUTER JOIN пусть S обозначает набор строк, являющийся результатом выражения запросов

      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.



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



      Книжный магазин