Каковы основные компоненты и типы оператора JOIN в SQL?

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

Ответ

Оператор JOIN в SQL используется для объединения строк из двух или более таблиц на основе логической связи между ними.

Структура JOIN-запроса:

  1. Ключевое слово типа соединения: INNER, LEFT [OUTER], RIGHT [OUTER], FULL [OUTER], CROSS.
  2. Имя присоединяемой таблицы.
  3. Условие соединения: Ключевое слово ON с предикатом или USING для столбцов с одинаковыми именами.

Основные типы JOIN:

  • INNER JOIN: Возвращает только строки, где есть совпадение в обеих таблицах.

    SELECT orders.id, customers.name
    FROM orders
    INNER JOIN customers ON orders.customer_id = customers.id;
  • LEFT (OUTER) JOIN: Возвращает все строки из левой таблицы и совпадающие из правой. При отсутствии совпадения поля правой таблицы будут NULL.

    SELECT employees.name, departments.name AS dept_name
    FROM employees
    LEFT JOIN departments ON employees.dept_id = departments.id;
  • RIGHT JOIN и FULL JOIN: Аналогичны LEFT JOIN, но приоритет отдается правой таблице или возвращаются все строки из обеих таблиц соответственно.

  • CROSS JOIN: Возвращает декартово произведение (все возможные комбинации строк).

  • SELF JOIN: Соединение таблицы с самой собой (требуется использование псевдонимов).

    SELECT e1.name AS employee, e2.name AS manager
    FROM employees e1
    LEFT JOIN employees e2 ON e1.manager_id = e2.id;

Почему важен правильный выбор типа JOIN? INNER JOIN фильтрует данные, а LEFT JOIN сохраняет все записи основной таблицы, что критично для отчетов, где нужно видеть все сущности, даже без связанных данных.