Декартово произведение
EXCEPT
EXCEPT
SELECT X,Y,…Z FROM B
Для приведенного примера SQL – запрос соответствует структуре:
SELECT Табельный номер, Фамилия, Зарплата FROM A
SELECT Табельный номер, Фамилия, Зарплата FROM B
Определение. Декартовым произведением двух отношений
и
называется отношение, схема которого является объединением схем отношений
и
:
,
а экземпляр включает кортежи, полученные сцеплением кортежей отношений
и
:
,
таких, что
,
.
Синтаксис операции декартового произведения:
A ´ B
Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.
Замечание. Мощность произведения A ´ B равна произведению мощностей отношений
и
, т.к. каждый кортеж отношения
соединяется с каждым кортежем отношения
.
Замечание. Если в отношения
и
имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать.
Пример. Пусть даны два отношения
и
с информацией о поставщиках и деталях:
Таблица 6 Отношение A (Поставщики)
| Номер поставщика | Наименование поставщика |
| 1 | Иванов |
| 2 | Петров |
| 3 | Сидоров |
Таблица 7 Отношение B (Детали)
| Номер детали | Наименование детали |
| 1 | Болт |
| 2 | Гайка |
| 3 | Винт |
Декартово произведение отношений
и
будет иметь вид:
Таблица 8 Отношение A ´ B
| Номер поставщика | Наименование поставщика | Номер детали | Наименование детали |
| Иванов | Болт | ||
| Иванов | Гайка | ||
| Иванов | Винт | ||
| Петров | Болт | ||
| Петров | Гайка | ||
| Петров | Винт | ||
| Сидоров | Болт | ||
| Сидоров | Гайка | ||
| Сидоров | Винт |
Замечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций, в контексте некоторых запросов.
Замечание. По умолчанию операции UNION, INTERSECT и EXCEPT удаляют из результирующих отношений повторяющиеся строки. Но если требуется оставить все строки, в SQL используются специальные формы операций UNION ALL, INTERSECT ALL и EXCEPT ALL.