Sobes.tech
Back to questions
Junior — Middle
61

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

Answer from AI

sobes.tech AI

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

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

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

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

    • Левое внешнее соединение (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие из правой. Если совпадения нет, поля правой таблицы NULL.

    • Правое внешнее соединение (RIGHT OUTER JOIN) — наоборот, все строки из правой таблицы и совпадающие из левой.

Пример:

SELECT * FROM A
INNER JOIN B ON A.id = B.a_id; -- только совпадающие

SELECT * FROM A
LEFT JOIN B ON A.id = B.a_id; -- все из A + совпадения из B

SELECT * FROM A
RIGHT JOIN B ON A.id = B.a_id; -- все из B + совпадения из A

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