Sobes.tech
Назад к вопросам
Junior — Middle
77

Можете перечислить основные типы соединений таблиц в SQL?

Компании, где спрашивали
МТСМТС
ITFB Group

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Нужно показать, что известны базовые типы JOIN и понимается, чем они отличаются по результату. Важно уметь объяснить, когда какой тип соединения использовать. Для собеседования обычно достаточно уверенно назвать INNER, LEFT, RIGHT, FULL и CROSS JOIN.

Определение:

JOIN в SQL — это способ объединить строки из двух или более таблиц по связанным полям. Основные типы отличаются тем, какие строки попадают в результат: только совпавшие, все из одной таблицы с NULL из другой, все из обеих таблиц или декартово произведение.

  • INNER JOIN — только строки с совпадением в обеих таблицах.
  • LEFT JOIN — все строки из левой таблицы и совпавшие из правой, иначе NULL.
  • RIGHT JOIN — все строки из правой таблицы и совпавшие из левой, иначе NULL.
  • FULL OUTER JOIN — все строки из обеих таблиц, где нет пары, подставляется NULL.
  • CROSS JOIN — все возможные комбинации строк из двух таблиц.

Пример использования:

Например, есть таблицы orders и customers. Чтобы получить заказы вместе с данными клиента, обычно используют INNER JOIN, если нужны только заказы с существующим клиентом, или LEFT JOIN, если нужно показать все заказы, даже если клиент не найден.

SELECT
    o.id AS order_id,
    o.total,
    c.name AS customer_name
FROM orders o
LEFT JOIN customers c
    ON o.customer_id = c.id;

Пояснение кода:

Код показывает LEFT JOIN между заказами и клиентами. Сначала выбираются поля заказа и имя клиента. Затем таблица orders соединяется с customers по условию o.customer_id = c.id.

Если для заказа клиент найден, в customer_name будет имя клиента. Если совпадения нет, заказ все равно попадет в результат, а customer_name будет NULL. Это удобно, когда нельзя терять строки из основной таблицы.

Ключевые моменты:

  • INNER JOIN возвращает только совпавшие строки.
  • LEFT JOIN сохраняет все строки из левой таблицы.
  • RIGHT JOIN сохраняет все строки из правой таблицы.
  • FULL OUTER JOIN объединяет все строки обеих таблиц.
  • CROSS JOIN создает все возможные пары строк.
  • На практике чаще всего используют INNER JOIN и LEFT JOIN.