Что делает оператор UNION в SQL?

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

Ответ

Оператор UNION в SQL используется для объединения результатов двух или более SELECT-запросов в один результирующий набор. Ключевые особенности:

  • Объединяет только совместимые наборы данных: Все SELECT-запросы должны возвращать одинаковое количество столбцов, и соответствующие столбцы должны иметь совместимые типы данных.
  • Удаляет дубликаты строк: По умолчанию UNION возвращает только уникальные строки из объединенного результата (аналогично SELECT DISTINCT).
  • UNION ALL: Если нужно сохранить все строки, включая дубликаты, используется UNION ALL. Он работает быстрее, так как не выполняет проверку на уникальность.

Синтаксис:

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

Практический пример: Предположим, есть две таблицы: employees_uk и employees_usa. Нужно получить общий список уникальных email всех сотрудников.

-- Получить уникальные email из двух таблиц
SELECT email FROM employees_uk
UNION
SELECT email FROM employees_usa
ORDER BY email;

-- Получить ВСЕ email, включая повторяющиеся
SELECT email FROM employees_uk
UNION ALL
SELECT email FROM employees_usa;

Важные отличия от JOIN:

  • JOIN соединяет таблицы по горизонтали (добавляет столбцы), основываясь на условии связи.
  • UNION объединяет результаты по вертикали (добавляет строки), требуя одинаковую структуру выборок.

Применение в тестировании:

  • Проверка корректности данных после миграции или сравнения данных из разных источников.
  • Создание комплексных тестовых наборов данных.