К списку
SQL и базы данныхMiddleТехническое

Обзор основных SQL-операций объединения данных

Краткий ответ

В SQL существуют четыре ключевые операции объединения: UNION, UNION ALL, INTERSECT и EXCEPT. Они позволяют комбинировать результаты запросов с разным поведением по отношению к дубликатам и пересечениям строк.

Развёрнуто

Краткий ответ

В SQL операции объединения данных включают UNION, UNION ALL, INTERSECT и EXCEPT. UNION удаляет дубликаты, объединяя результат двух запросов, а UNION ALL сохраняет все строки. INTERSECT возвращает только общие строки, а EXCEPT — уникальные строки из первого набора, отсутствующие во втором.


Как это работает

Операции объединения позволяют комбинировать результаты двух или более запросов с похожей структурой колонок.

  • UNION собирает все уникальные строки из обоих запросов.
  • UNION ALL возвращает все строки, включая дубликаты.
  • INTERSECT выдает только те строки, которые присутствуют в обоих запросах.
  • EXCEPT показывает строки, которые есть в первом запросе, но отсутствуют во втором.
Операция Удаление дубликатов Результат
UNION Да Все уникальные строки из обоих запросов
UNION ALL Нет Все строки из обоих запросов
INTERSECT Да Пересечение строк
EXCEPT Да Разница: строки из первого запроса, которых нет во втором

Пример

-- Получить всех клиентов из двух таблиц, без повторов
SELECT client_id FROM clients_a
UNION
SELECT client_id FROM clients_b;

-- Вернуть всех клиентов, включая дубликаты
SELECT client_id FROM clients_a
UNION ALL
SELECT client_id FROM clients_b;

-- Найти клиентов, которые есть в обеих таблицах
SELECT client_id FROM clients_a
INTERSECT
SELECT client_id FROM clients_b;

-- Найти клиентов из первой таблицы, отсутствующих во второй
SELECT client_id FROM clients_a
EXCEPT
SELECT client_id FROM clients_b;

В этом примере показано, как каждая операция влияет на итоговый набор данных.

Что важно знать на собеседовании

  • UNION по умолчанию убирает дубликаты, что влияет на производительность.
  • UNION ALL быстрее, так как не требует дополнительной сортировки для удаления дубликатов.
  • INTERSECT и EXCEPT не поддерживаются во всех СУБД или имеют особенности реализации.
  • Количество и порядок столбцов в объединяемых запросах должны совпадать.
  • Типы данных в соответствующих колонках должны быть совместимы для корректного объединения.

Тема: SQL и базы данных | Уровень: middle