📌 Чем отличаются LEFT JOIN от INNER JOIN?



💬 Спрашивают в 19 % собеседований



LEFT JOIN и INNER JOIN – это два типа соединений (joins) в языке SQL, которые используются для объединения строк из двух или более таблиц на основе связанных столбцов. Основное различие между ними заключается в том, какие строки включаются в результирующий набор данных.



🤔 INNER JOIN



INNER JOIN возвращает только те строки, которые имеют совпадающие значения в обеих таблицах, участвующих в соединении.



Особенности:



Возвращает строки, где существует совпадение значений в обоих таблицах.



Если нет совпадающих значений, строка не будет включена в результирующий набор.



Пример:



Предположим, у нас есть две таблицы: Employees и Departments.

SELECT Employees.name, Departments.department_name

FROM Employees

INNER JOIN Departments ON Employees.department_id = Departments.id;




Этот запрос вернет только тех сотрудников, у которых есть совпадающий департамент в таблице Departments.



🤔 LEFT JOIN



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



Особенности:



Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы.



Если в правой таблице нет соответствия, возвращаются NULL значения для правой таблицы.



Пример:



Используем те же таблицы Employees и Departments.

SELECT Employees.name, Departments.department_name

FROM Employees

LEFT JOIN Departments ON Employees.department_id = Departments.id;




Этот запрос вернет всех сотрудников, включая тех, у кого нет соответствующего департамента в таблице Departments. Для таких сотрудников столбцы из таблицы Departments будут содержать NULL значения.



🤔 Сравнение:



1️⃣ INNER JOIN:



Возвращает только совпадающие строки.



Если нет совпадений, строки не включаются в результат.



2️⃣ LEFT JOIN:



Возвращает все строки из левой таблицы.



Включает совпадающие строки из правой таблицы.



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



🤔 Краткий ответ:



INNER JOIN возвращает только совпадающие строки из обеих таблиц.



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



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых