Что делает оператор FULL OUTER JOIN в SQL?

«Что делает оператор FULL OUTER JOIN в SQL?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

FULL OUTER JOIN — это оператор SQL, который возвращает все записи из обеих объединяемых таблиц.

Логика работы:

  • Совпадающие записи из левой (TableA) и правой (TableB) таблиц объединяются в одну строку.
  • Для записей из TableA, у которых нет совпадения в TableB, столбцы из TableB заполняются значениями NULL.
  • Для записей из TableB, у которых нет совпадения в TableA, столбцы из TableA заполняются значениями NULL.

Пример синтаксиса:

SELECT *
FROM TableA
FULL OUTER JOIN TableB
    ON TableA.id = TableB.id;

Важные особенности:

  • Не поддерживается в MySQL. Для эмуляции используется комбинация LEFT JOIN и RIGHT JOIN с UNION.
  • Поддерживается в PostgreSQL, SQL Server, Oracle и других СУБД.
  • Полезен для полного сравнения двух наборов данных или поиска отсутствующих записей в каждой из таблиц.