Какие основные типы JOIN существуют в SQL и для чего они используются?

Ответ

JOIN'ы в SQL используются для комбинирования строк из двух или более таблиц на основе связанных столбцов между ними. Вот основные типы:

INNER JOIN

Возвращает только те записи, которые имеют совпадающие значения в обеих таблицах. Это наиболее часто используемый тип соединения.

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Результат: только заказы, у которых есть соответствующий покупатель.

LEFT JOIN (или LEFT OUTER JOIN)

Возвращает все записи из левой таблицы и совпадающие записи из правой. Если совпадения в правой таблице нет, ее столбцы будут содержать NULL.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Результат: все покупатели, даже те, у которых нет заказов (у них OrderID будет NULL).

RIGHT JOIN (или RIGHT OUTER JOIN)

Противоположность LEFT JOIN. Возвращает все записи из правой таблицы и совпадающие из левой. Если совпадения в левой таблице нет, ее столбцы будут NULL.

FULL OUTER JOIN

Возвращает все записи, когда есть совпадение либо в левой, либо в правой таблице. Фактически, это объединение результатов LEFT и RIGHT JOIN.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Результат: все покупатели и все заказы. Если у покупателя нет заказа или у заказа нет покупателя, соответствующие поля будут NULL.

CROSS JOIN

Возвращает декартово произведение двух таблиц — каждая строка из первой таблицы соединяется с каждой строкой из второй. Используется редко, в основном для генерации комбинаций или тестовых данных.