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

       

В языке обеспечивается специальная встроенная


В языке обеспечивается специальная встроенная функция SET, которая вычисляет множество значений заданного атрибута, присутствующих в данной группе. Это множество атрибутов затем можно сравнивать с другим множеством в разделе HAVING. В запросе Q11 внутреннее отображение возвращает множество всех названий заданий в таблице EMP (с дубликатами). Внешнее отображение группирует служащих по номерам отделов и затем выбирает те группы, в которых множество названий заданий совпадает со множеством всех названий заданий. В этом случае операция "=" используется для сравнения двух множеств. К другим операциям сравнения множеств относятся ¬=, [IS][NOT]IN, CONTAINS и DOES NOT CONTAIN. Все эти операции сравнения множеств до выполнения сравнения исключают дубликаты из обоих своих операндов.

Q11. Выдать номера отделов, служащие которых выполняют все возможные задания. SELECT DNO FROM EMP GROUP BY DNO HAVING SET(JOB) = SELECT JOB FROM EMP

В SEQUEL 2 также доступны теоретико-множественные операции INTERSECT, UNION и MINUS. Их можно использовать для комбинирования результатов двух отображений, как показано в запросе Q12. Запрос может содержать несколько теоретико-множественных операторов; для разрешения неоднозначностей при необходимости используются скобки. Как и при применении перечисленных выше операций сравнения множеств, до выполнения операций INTERSECT, UNION и MINUS из операндов автоматически исключаются дубликаты.

Q12. Выдать номера отделов, в которых нет служащих. SELECT DNO FROM DEPT MINUS SELECT DNO FROM EMP

Запрос может возвращать значения, выбранные из более чем одного отношения. Примером является операция соединения (join), которую иллюстрируетзапрос Q13. В разделе FROM пользователь может указать несколько отношений. При выполнении такого запроса концептуально формируется декартово произведение этих отношений, и затем оно фильтруется предикатами раздела WHERE. (Конечно, правильно разработанная система будет избегать реального формирования декартова произведения, но достигнет того же результата с помощью более эффективных средств.) Если в разделе FROM указывается более одного отношения, пользователь должен надлежащим образом уточнять каждое имя атрибута в разделах SELECT и WHERE (например, чтобы можно было различить EMP.DNO и DEPT.DNO).

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