Sobes.tech
Back to questions
Junior — Middle
96

Объясните различия между внутренним соединением и внешним соединением в SQL.

Answer from AI

sobes.tech AI

В SQL внутреннее (INNER JOIN) и внешнее соединения (OUTER JOIN) используются для объединения строк из двух таблиц, но отличаются по способу выбора строк:

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

  • Внешнее соединение (OUTER JOIN) возвращает все строки из одной таблицы и соответствующие строки из другой. Если соответствия нет, то в местах отсутствующих данных будут NULL.

Внешние соединения бывают трёх типов:

  • LEFT OUTER JOIN — все строки из левой таблицы + совпадающие из правой
  • RIGHT OUTER JOIN — все строки из правой таблицы + совпадающие из левой
  • FULL OUTER JOIN — все строки из обеих таблиц, с NULL там, где нет совпадений

Пример:

SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;
-- Вернёт только пользователей с заказами

SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id;
-- Вернёт всех пользователей, даже если у них нет заказов (orders будут NULL)