Что такое INNER JOIN в SQL?

«Что такое INNER JOIN в SQL?» — вопрос из категории Базы данных, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

INNER JOIN — это операция соединения таблиц в SQL, которая возвращает только те строки, для которых условие соединения (ON) выполняется в обеих таблицах. Строки без соответствия исключаются из результирующего набора.

Пример:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

В этом запросе в результат попадут только заказы, для которых существует соответствующий клиент в таблице Customers. Заказы без клиента или клиенты без заказов будут отфильтрованы.

Ключевые особенности и best practices:

  • Производительность: Обычно выполняется быстрее, чем OUTER JOIN, так как результирующий набор меньше. Для оптимизации важно иметь индексы на полях, используемых в условии ON.
  • Явное указание типа JOIN: Всегда используйте ключевое слово INNER для ясности, хотя JOIN по умолчанию во многих СУБД является внутренним.
  • Соединение нескольких таблиц: Можно последовательно соединять множество таблиц.
  • Альтернативный синтаксис: Эквивалентом является перечисление таблиц в FROM с условием в WHERE (старый синтаксис):
    SELECT Orders.OrderID, Customers.CustomerName
    FROM Orders, Customers
    WHERE Orders.CustomerID = Customers.CustomerID;

    Однако современный синтаксис с INNER JOIN считается более читаемым и явным.