Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БазыДанных(заочка) / БД лабпрактикум ч2.doc
Скачиваний:
55
Добавлен:
17.04.2015
Размер:
218.11 Кб
Скачать

Применение агрегатных функций и вложенных запросов в инструкции Select

В SQL добавлены дополнительные функции, которые позволяют вычислять обоб­щенные групповые значения. Для применения агрегатных функций предполага­ется предварительная операция группировки. В чем состоит суть операции группировки? При группировке все множество кортежей отношения разбивает­ся на группы, в которых собираются кортежи, имеющие одинаковые значения атрибутов, которые заданы в списке группировки.

Агрегатные функции используются подобно именам полей в операторе SELECT, но с одним исключением: они берут имя поля как аргумент. С функциями SUM и AVG могут использоваться только числовые поля. С функциями COUNT, MAX и MIN могут использоваться как числовые, так и символьные поля. При использова­нии с символьными полями МАХ и MIN будут транслировать их в эквивалент ASCII кода и обрабатывать в алфавитном порядке. Некоторые СУБД позволя­ют использовать вложенные агрегаты, но это является отклонением от стандар­та ANSI со всеми вытекающими отсюда последствиями.

Можно применять агрегатные функции также и без операции предварительной группировки, в этом случае все отношение рассматривается как одна группа и для этой группы можно вычислить одно значение на группу.

Предложение GROUP BY позволяет определять подмножество значений в особом поле в терминах другого поля и применять функцию aгрегата к подмножеству. Это дает возможность объединять поля и aгpeгaтныe функции в едином предло­жении SELECT. Aгpeгaтныe функции могут применяться как в выражении вывода результатов строки SELECT, так и в выражении условия обработки сформирован­ных групп HAVING. В этом случае каждая агрегатная функция вычисляется для каждой выделенной группы. Значения, полученные при вычислении агрегатных функций, могут быть использованы для вывода соответствующих результатов или для условия отбора групп.

Вложенные запросы в инструкции выбора

Для выполнения действий, которые не могут быть реализованы в виде единственного запроса в единственном наборе таблиц, применяются сложные запросы. В них объединя­ются одна или больше инструкций SELECT или несколько предложений FROM внутри инструкции SELECT.

Подзапрос (подчиненный запрос) — инструкция SELECT, вложенная внутрь инструкций SELECT, SELECT... INTO, INSERT ... INTO, DELETE или UPDATE или внутрь другого подзапроса.

Подзапрос можно вводить вместо выражения в списке полей инструкции SELECT или в предложениях WHERE и HAVING. В подзапросе используется инструкция SELECT, кото­рая обеспечивает набор определенных значений, оцениваемых затем в выражении предло­жения WHERE или HAVING.

Для создания подзапроса можно использовать три формы синтаксиса:

сравнение [ANY | ALL | SOME] (инструкция_SQL)

выражение [NOT] IN (uнcmpyкция_SQL)

[NOT] EXISTS (инструкция_SQL)

Первая форма – сравнение выражения с результатом подчиненного запроса.

Ключевые слова:

ANY – каждый (сравнение с каждым элементом подзапроса).

ALL - все (сравнение со всеми элементами подзапроса).

SOME – некоторые (сравнение с некоторыми элементами подзапроса).

В предложении FROM инструкции SELECT допустимо применять синонимы (псевдонимы) имени таблицы, если при формировании запроса нам требуется более чем один экземпляр некоторого отношения. Синонимы задаются с использованием ключевого слова AS, которое может быть вообще опущено. Поэтому часть FROM может выглядеть следующим образом:

FROM Rl AS A, Rl AS В или

FROM Rl A, R1 В:

оба выражения эквивалентны и рассматриваются как применения оператора SELECT к двум экземплярам таблицы Rl.