Классика баз данных - статьи

       

Средства запросов


Базовая операция языка SEQUEL, называемая отображением (mapping), иллюстрируется в приводимом ниже примере Q1. Отображение предполагает, что известная количественная характеристика (DNO = 50) должно быть преобразовано в искомую количественную характеристику (NAME) посредством отношения (EMP). В разделе SELECT перечисляются атрибуты, которые должны быть возвращены запросом, – если нужен весь кортеж, можно написать SELECT *. Раздел WHERE может содержать любой набор предикатов, которые сравнивают атрибуты кортежа со значениями (например, DNO = 50) или два атрибута кортежа между собой (например, SAL < COMM). Предикаты могут соединяться с помощью AND и OR; и могут использоваться скобки, чтобы установить последовательность вычисления.

Q1. Найти имена служащих в отделе 50. SELECT NAME FROM EMP WHERE DNO = 50

В общем случае, отображение возвращает набор значений – выбранные атрибуты кортежей, которые удовлетворяют разделу WHERE. Из возвращенного множества не исключаются значения-дубликаты, если пользователь не потребует этого, написав SELECT UNIQUE. Мы выбрали это соглашение, поскольку исключение значений-дубликатов – это дорогостоящая операция, которая, по нашему мнению, не должна выполняться по умолчанию. В запросе Q2 иллюстрируется "проекция" отношения EMP на атрибут DNO.

Q2. Выдать все различные номера отделов в таблице EMP. SELECT UNIQUE DNO FROM EMP

Предикат во разделе WHERE может проверять атрибут на принадлежность множеству, как показано в запросе Q3, где также иллюстрируется представление множества констант.

Q3. Выдать имена служащих в отделах 25, 47 и 53. SELECT NAME FROM EMP WHERE DNO IN (25,47,53)

Можно использовать результат отображения в разделе WHERE другого отображения. Эта операция, называемая вложенным отображением (nested mapping), иллюстрируется в Q4. Внутреннее отображение возвращает набор значений DNO отделов, расположенных в Эванстоне (Evanston). Затем внешнее отображение выполняется так, как если бы вместо внутреннего отображения ему было задано множество констант.

Содержание  Назад  Вперед