Язык SQL имеет три теоретико-множественных оператора UNION, INTERSECT, MINUS, которые позволяют объединять, пересекать и получать разность двух множеств. Аргументами этих операторов являются отношения, получаемые в результате выполнения предложений SELECT. Таблицы-операнды должны быть совместимыми по теоретико-множественным операциям. Этот означает, что они должны иметь одинаковое количество столбцов и соответствующие пары столбцов должны иметь совместимый тип данных. Рассмотрим несколько примеров.
1) Выдать факультеты, располагающиеся в корпусе 5 И в корпусе 6:
SELECT Name
FROM FACULTY
WHERE Building = 5
INTERSECT
SELECT Name
FROM FACULTY
WHERE Building = 6
Отметим, что операция пересечения может быть выражена также с помощью предиката IN следующим образом :
SELECT Name
FROM FACULTY
WHERE Building = 5 AND Name IN (SELECT Name
FROM FACULTY
WHERE Building = 6)
2) Выдать имена преподавателей, читающих лекции "Базы данных", но НЕ читающих лекции "Программирование"
SELECT t.Name
FROM TEACHER t, LECTURE l, SUBJECT s
WHERE t.#T = l.#T AND l.#S = s.#S AND s.Name = "Базы данных"
MINUS
SELECT t.Name
FROM TEACHER t, LECTURE l, SUBJECT s
WHERE t.#T = l.#T AND l.#S = s.#S AND s.Name = "Программирование"
Отметим, что операция разности может быть выражена также с помощью предиката NOT IN следующим образом:
SELECT t.Name
FROM TEACHER t, LECTURE l, SUBJECT s
WHERE t.#T = l.#T AND l.#S = s.#S AND s.Name = "Базы данных" AND
t.Name NOT IN (SELECT t.Name
FROM TEACHER t, LECTURE l, SUBJECT s
WHERE t.#T = l.#T AND l.#S = s.#S AND s.Name = "Программирование")
3) Выдать список имен всех деканов и заведующих кафедрами.
SELECT Name
FROM FACULTY
UNION
SELECT Name
FROM DEPARTMENT