В чем разница между видами JOIN в SQL?

«В чем разница между видами JOIN в SQL?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца. Основные виды:

  1. INNER JOIN

    • Возвращает только те строки, где есть совпадение в обеих таблицах.
    • Строки без совпадения исключаются из результата.
      SELECT * FROM Employees e
      INNER JOIN Departments d ON e.DepartmentID = d.ID;
      -- Результат: только сотрудники с привязанным отделом.
  2. LEFT (OUTER) JOIN

    • Возвращает все строки из левой таблицы и совпадающие строки из правой.
    • Если совпадения нет, для столбцов правой таблицы возвращается NULL.
      SELECT * FROM Employees e
      LEFT JOIN Departments d ON e.DepartmentID = d.ID;
      -- Результат: все сотрудники, даже те, у кого нет отдела.
  3. RIGHT (OUTER) JOIN

    • Аналог LEFT JOIN, но приоритет у правой таблицы. Используется реже.
  4. FULL (OUTER) JOIN

    • Возвращает все строки из обеих таблиц.
    • Если совпадения нет, для недостающих столбцов возвращается NULL.
      SELECT * FROM Employees e
      FULL JOIN Departments d ON e.DepartmentID = d.ID;
      -- Результат: все сотрудники и все отделы.
  5. CROSS JOIN

    • Возвращает декартово произведение: каждая строка первой таблицы соединяется с каждой строкой второй.
      SELECT * FROM Colors CROSS JOIN Sizes;
      -- Результат: все возможные комбинации цветов и размеров.

Для тестирования понимание JOIN критично для:

  • Проверки корректности данных в отчётах (правильно ли объединяются сущности).
  • Написания сложных запросов для извлечения тестовых данных.
  • Валидации целостности связей в базе (например, с помощью LEFT JOIN можно найти «осиротевшие» записи).