- Объединением двух таблиц А и В называется таблица, содержащая все строки, которые имеются в первой таблице (А), во второй таблице (В) или в обеих этих таблицах одновременно (операция UNION).
- Пересечением двух таблиц называется таблица, содержащая все строки, присутствующие в обеих исходных таблицах одновременно (операция INTERSECT).
- Разностью двух таблиц А и В называется таблица, содержащая все строки, которые присутствуют в таблице А, но отсутствуют в таблице В (операция EXCEPT).
Одни диалекты языка SQL не поддерживают операций INTERSECT и EXCEPT, a в других вместо ключевого слова EXCEPT используется ключевое слово MINUS.
При указании конструкции CORRESPONDING BY операция над множествами выполняется для указанных столбцов. Если задано только ключевое слово CORRESPONDING, а конструкция BY отсутствует, операция над множествами выполняется для столбцов, которые являются общими для обеих таблиц. Если указано ключевое слово ALL, результирующая таблица может содержать повторяющиеся строки.
Пример 14. Создайте список всех регионов, в которых либо находится отделение компании, либо располагаются сдаваемые в аренду объекты.
(SELECT city
FROM Branch
WHERE city IS NOT NULL)
UNION
(SELECT city
FROM PropertyForRent
WHERE city IS NOT NULL)
Другой вариант:
(SELECT *
FROM Branch
WHERE city IS NOT NULL)
UNION CORRESPONDING BY city
(SELECT *
FROM PropertyForRent
WHERE city IS NOT NULL)
Во втором варианте в запросах select возвращаются все столбцы, а не только те, по которым происходит объединение. В результате необходимо использовать конструкцию CORRESPONDING BY.
Пример 15. Использование операции INTERSECT. Создайте список всех городов, в которых располагаются и отделения компании, и сдаваемые в аренду объекты.
(SELECT city
FROM Branch
WHERE city IS NOT NULL)
INTERSECT
(SELECT city
FROM PropertyForRent
WHERE city IS NOT NULL)
Пример 16. Использование операции EXCEPT. Создайте список всех городов, в которых имеется отделение компании, но нет сдаваемых в аренду объектов.