Данный оператор SQL является примером внутреннего соединения. При внутреннем соединении возвращаются только совпадающие записи из обеих таблиц.
Чтобы написать статью в блоге о различных типах SQL-соединений с примерами кода, мы можем рассмотреть следующие распространенные типы соединений:
-
Внутреннее соединение:
Внутреннее соединение возвращает только совпадающие записи из обеих таблиц. Вот пример: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; -
Левое соединение.
Левое соединение возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, возвращаются значения 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; -
Правильное соединение.
Правое соединение возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если совпадений нет, возвращаются значения 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; -
Полное внешнее соединение:
Полное внешнее соединение возвращает все записи, если есть совпадения в левой или правой таблице. Если совпадений нет, возвращаются значения 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; -
Перекрестное соединение:
Перекрестное соединение возвращает декартово произведение обеих таблиц, в результате чего получается комбинация всех строк из обеих таблиц. Пример:SELECT CUSTOMER_T.CUSTOMER_ID, ORDER_T.CUSTOMER_ID, NAME FROM CUSTOMER_T CROSS JOIN ORDER_T; -
Самостоятельное объединение.
Самостоятельное объединение — это когда таблица объединяется сама с собой, обычно для поиска связей внутри одной таблицы. Пример: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; -
Естественное соединение.
Естественное соединение — это соединение, которое автоматически сопоставляет столбцы с одинаковыми именами в обеих таблицах. Пример:SELECT CUSTOMER_ID, NAME FROM CUSTOMER_T NATURAL JOIN ORDER_T;