Ответ
JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца. Основные виды:
-
INNER JOIN
- Возвращает только те строки, где есть совпадение в обеих таблицах.
- Строки без совпадения исключаются из результата.
SELECT * FROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.ID; -- Результат: только сотрудники с привязанным отделом.
-
LEFT (OUTER) JOIN
- Возвращает все строки из левой таблицы и совпадающие строки из правой.
- Если совпадения нет, для столбцов правой таблицы возвращается
NULL.SELECT * FROM Employees e LEFT JOIN Departments d ON e.DepartmentID = d.ID; -- Результат: все сотрудники, даже те, у кого нет отдела.
-
RIGHT (OUTER) JOIN
- Аналог
LEFT JOIN, но приоритет у правой таблицы. Используется реже.
- Аналог
-
FULL (OUTER) JOIN
- Возвращает все строки из обеих таблиц.
- Если совпадения нет, для недостающих столбцов возвращается
NULL.SELECT * FROM Employees e FULL JOIN Departments d ON e.DepartmentID = d.ID; -- Результат: все сотрудники и все отделы.
-
CROSS JOIN
- Возвращает декартово произведение: каждая строка первой таблицы соединяется с каждой строкой второй.
SELECT * FROM Colors CROSS JOIN Sizes; -- Результат: все возможные комбинации цветов и размеров.
- Возвращает декартово произведение: каждая строка первой таблицы соединяется с каждой строкой второй.
Для тестирования понимание JOIN критично для:
- Проверки корректности данных в отчётах (правильно ли объединяются сущности).
- Написания сложных запросов для извлечения тестовых данных.
- Валидации целостности связей в базе (например, с помощью
LEFT JOINможно найти «осиротевшие» записи).