Различные типы SQL-соединений, объясненные примерами

Данный оператор SQL является примером внутреннего соединения. При внутреннем соединении возвращаются только совпадающие записи из обеих таблиц.

Чтобы написать статью в блоге о различных типах SQL-соединений с примерами кода, мы можем рассмотреть следующие распространенные типы соединений:

  1. Внутреннее соединение:
    Внутреннее соединение возвращает только совпадающие записи из обеих таблиц. Вот пример:

    SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    INNER JOIN ORDER_T ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
  2. Левое соединение.
    Левое соединение возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, возвращаются значения NULL. Пример:

    SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    LEFT JOIN ORDER_T ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
  3. Правильное соединение.
    Правое соединение возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если совпадений нет, возвращаются значения NULL. Пример:

    SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    RIGHT JOIN ORDER_T ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
  4. Полное внешнее соединение:
    Полное внешнее соединение возвращает все записи, если есть совпадения в левой или правой таблице. Если совпадений нет, возвращаются значения NULL. Пример:

    SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    FULL OUTER JOIN ORDER_T ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
  5. Перекрестное соединение:
    Перекрестное соединение возвращает декартово произведение обеих таблиц, в результате чего получается комбинация всех строк из обеих таблиц. Пример:

    SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    CROSS JOIN ORDER_T;
  6. Самостоятельное объединение.
    Самостоятельное объединение — это когда таблица объединяется сама с собой, обычно для поиска связей внутри одной таблицы. Пример:

    SELECT a.CUSTOMER_ID, b.CUSTOMER_ID, a.NAME, b.NAME
    FROM CUSTOMER_T a
    JOIN CUSTOMER_T b ON a.CUSTOMER_ID = b.REFERENCED_BY;
  7. Естественное соединение.
    Естественное соединение — это соединение, которое автоматически сопоставляет столбцы с одинаковыми именами в обеих таблицах. Пример:

    SELECT CUSTOMER_ID, NAME
    FROM CUSTOMER_T
    NATURAL JOIN ORDER_T;