← Назад ко всем вопросам

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

1️⃣ Как кратко ответить

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

2️⃣ Подробное объяснение темы

В SQL, JOIN используется для объединения строк из двух или более таблиц на основе связанного столбца между ними. Два наиболее часто используемых типа JOIN — это INNER JOIN и LEFT JOIN. Понимание их различий важно для правильного извлечения данных.

INNER JOIN

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

Пример:

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

  • Customers (Клиенты)

    • CustomerID
    • CustomerName
  • Orders (Заказы)

    • OrderID
    • CustomerID
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • SELECT Customers.CustomerName, Orders.OrderID: выбираем имена клиентов и идентификаторы заказов.
  • FROM Customers: основная таблица, из которой выбираем данные.
  • INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID: соединяем таблицы Customers и Orders по CustomerID. Только те строки, где CustomerID совпадает в обеих таблицах, будут включены в результат.

LEFT JOIN

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

Пример:

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

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • SELECT Customers.CustomerName, Orders.OrderID: выбираем имена клиентов и идентификаторы заказов.
  • FROM Customers: основная таблица, из которой выбираем данные.
  • LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID: соединяем таблицы Customers и Orders по CustomerID. Все строки из Customers будут включены в результат, даже если для них нет соответствующих строк в Orders. Если совпадения нет, OrderID будет NULL.

Применение и выбор между INNER JOIN и LEFT JOIN

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

Тема: Базы данных и SQL
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки