Что такое JOIN в SQL и какие основные типы JOIN существуют?

«Что такое JOIN в SQL и какие основные типы JOIN существуют?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JOIN — это операция SQL, которая позволяет комбинировать строки из двух или более таблиц на основе связанного между ними столбца (ключа).

Основные типы JOIN (на примере таблиц Users и Orders):

Тип JOIN Описание Визуализация (результат содержит...)
INNER JOIN Возвращает только те записи, где есть совпадение в обеих таблицах. Пересечение множеств.
LEFT (OUTER) JOIN Возвращает все записи из левой таблицы и совпадающие записи из правой. Если совпадения нет, в правой части — NULL. Вся левая таблица + пересечение.
RIGHT (OUTER) JOIN Возвращает все записи из правой таблицы и совпадающие записи из левой. Если совпадения нет, в левой части — NULL. Вся правая таблица + пересечение.
FULL (OUTER) JOIN Возвращает все записи, когда есть совпадение в левой или правой таблице. Отсутствующие совпадения заполняются NULL. Объединение левой и правой таблиц.
CROSS JOIN Возвращает декартово произведение таблиц — все возможные комбинации строк. Все строки A × все строки B.

Пример INNER JOIN:

SELECT Users.name, Orders.order_id, Orders.amount
FROM Users
INNER JOIN Orders ON Users.id = Orders.user_id;
-- Результат: только пользователи, у которых есть заказы.

Пример LEFT JOIN:

SELECT Users.name, Orders.order_id
FROM Users
LEFT JOIN Orders ON Users.id = Orders.user_id;
-- Результат: ВСЕ пользователи, даже если у них нет заказов.
-- Для пользователей без заказов order_id будет NULL.

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