3.5. Реализация операций реляционной алгебры предложением SELECT

С помощью предложения SELECT можно реализовать любую операцию реляционной алгебры [2].

Селекция (горизонтальное подмножество) таблицы создается из тех ее строк, которые удовлетворяют заданным условиям. Пример:

SELECT  *
FROM    Блюда
WHER    Основа = 'Молоко'
AND     Выход > 200;

Проекция (вертикальное подмножество) таблицы создается из указанных ее столбцов (в заданном порядке) с последующим исключением избыточных дубликатов строк. Пример:

SELECT  DISTINCT Блюдо, Выход, Основа
FROM    Блюда;

Объединение двух таблиц содержит те строки, которые есть либо в первой, либо во второй, либо в обеих таблицах. Пример:

SELECT  Блюдо, Основа, Выход
FROM    Блюда
WHER    Основа = 'Овощи'
UNION
SELECT  Блюдо, Основа, Выход
FROM    Блюда
WHER    В = 'Г';

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

SELECT  БЛ
FROM    Состав
WHERE   БЛ IN
        (       SELECT БЛ
                FROM Меню);

Разность двух таблиц содержит только те строки, которые есть в первой, но отсутствуют во второй. Пример:

SELECT  БЛ
FROM    Состав
WHERE   БЛ NOT IN
        (       SELECT БЛ
                FROM Меню);

Декартово произведение таблиц и различные виды соединений были подробно рассмотрены в п. 3.2.1-3.2.6.

Здесь опущено лишь достаточно нудное описание редко встречаемой операция деления, которая также может быть реализована предложением SELECT с коррелированными вложенными подзапросами.