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

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

Ответ

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

Ключевые характеристики:

  1. Удаление дубликатов: По умолчанию UNION возвращает только уникальные строки.
  2. Совместимость столбцов: Все SELECT запросы должны иметь одинаковое количество столбцов, и соответствующие столбцы должны быть совместимых типов данных.
  3. Порядок: Столбцы объединяются по позиции, а не по имени.

Пример:

-- Найти всех поставщиков и клиентов из города 'London'
SELECT City, 'Supplier' AS Type FROM Suppliers WHERE City = 'London'
UNION
SELECT City, 'Customer' FROM Customers WHERE City = 'London';

Варианты и ограничения:

  • UNION ALL: Объединяет результаты без удаления дубликатов. Работает быстрее, если дубли не критичны.
  • ORDER BY: Может быть указан только в конце всего объединенного запроса и применяется к итоговому результату.
  • Ограничение: Нельзя использовать UNION внутри подзапроса с IN (в некоторых СУБД), но результат UNION можно использовать как подзапрос.