Ответ
Оператор JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца. Основные типы:
1. INNER JOIN Возвращает только строки, где есть совпадение в обеих таблицах.
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
2. LEFT (OUTER) JOIN
Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадения нет, для правой таблицы возвращаются NULL.
SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
-- Покажет всех сотрудников, даже без отдела
3. RIGHT (OUTER) JOIN
Обратный LEFT JOIN. Возвращает все строки из правой таблицы и совпадающие из левой.
4. FULL (OUTER) JOIN
Возвращает все строки, когда есть совпадение в левой ИЛИ правой таблице. Если совпадения нет, недостающие стороны заполняются NULL. (Не во всех СУБД).
5. CROSS JOIN Возвращает декартово произведение: каждая строка из первой таблицы соединяется с каждой строкой из второй. Используется редко.
SELECT sizes.size, colors.color FROM sizes CROSS JOIN colors;
6. SELF JOIN Соединение таблицы с самой собой (часто для иерархических данных).
SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
LEFT JOIN employees e2 ON e1.manager_id = e2.id;
Визуализация (Venn-диаграммы):
INNER JOIN= пересечение двух кругов.LEFT JOIN= весь левый круг + пересечение.FULL JOIN= объединение двух кругов.