Что делает оператор UNION в SQL и каковы его основные правила?

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

Ответ

UNION — это оператор SQL, который объединяет результаты двух или более SELECT-запросов в один результирующий набор.

Основные правила и особенности:

  1. Количество и тип столбцов: Все SELECT в объединении должны иметь одинаковое количество столбцов, и соответствующие столбцы должны иметь совместимые типы данных.
  2. Устранение дубликатов: По умолчанию UNION удаляет повторяющиеся строки из конечного результата. Для сохранения всех строк, включая дубликаты, используется UNION ALL.
  3. Порядок и имена столбцов: Имена столбцов в результирующем наборе берутся из первого SELECT. Порядок строк определяется порядком выполнения запросов и последующей сортировкой (если не используется ORDER BY).

Синтаксис:

SELECT column1, column2 FROM table1
UNION -- или UNION ALL
SELECT column1, column2 FROM table2
ORDER BY column1; -- ORDER BY применяется ко всему объединенному результату

Пример:

-- Найти всех поставщиков и клиентов из города 'London'
SELECT 'Supplier' AS Type, company_name, city FROM suppliers WHERE city = 'London'
UNION
SELECT 'Customer', company_name, city FROM customers WHERE city = 'London'
ORDER BY company_name;

Сравнение UNION и UNION ALL:

  • UNION: Выполняет дополнительную операцию сортировки/хеширования для удаления дубликатов. Медленнее, но гарантирует уникальность.
  • UNION ALL: Просто склеивает результаты. Быстрее. Используйте его, если дубликаты невозможны или не критичны.