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

«В чем разница между INNER JOIN и LEFT JOIN в SQL» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

INNER JOIN возвращает только те строки, где есть совпадения в обеих таблицах. Если совпадений нет - строка не попадет в результат.

LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой таблицы, даже если нет совпадений в правой. В таком случае поля из правой таблицы будут NULL.

Пример:

-- INNER JOIN (только заказы с клиентами)
SELECT o.id, c.name 
FROM orders o
INNER JOIN customers c ON o.customer_id = c.id;

-- LEFT JOIN (все заказы, даже без клиентов)
SELECT o.id, c.name
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.id;

Основное отличие: INNER JOIN фильтрует данные, LEFT JOIN сохраняет все записи из левой таблицы.