Какие основные виды JOIN в SQL?

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

Ответ

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

Основные виды:

  1. INNER JOIN

    • Возвращает только те строки, где есть совпадение в обеих таблицах.
      SELECT users.name, orders.amount
      FROM users
      INNER JOIN orders ON users.id = orders.user_id;
  2. LEFT (OUTER) JOIN

    • Возвращает все строки из левой таблицы и совпадающие строки из правой. При отсутствии совпадений в правой таблице возвращаются NULL.
      SELECT users.name, orders.amount
      FROM users
      LEFT JOIN orders ON users.id = orders.user_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;