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

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

Ответ

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

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

Пример:

-- INNER JOIN (только заказы с клиентами)
SELECT * FROM Orders 
INNER JOIN Customers ON Orders.customer_id = Customers.id;

-- LEFT JOIN (все заказы, даже без клиентов)
SELECT * FROM Orders 
LEFT JOIN Customers ON Orders.customer_id = Customers.id;

LEFT JOIN полезен, когда нужно сохранить все записи из основной таблицы, даже если связанные данные отсутствуют.