- •Часть 2
- •Лабораторная работа № 9. Макросы вAccess. Первое знакомство
- •Вводные замечания
- •Макрокоманды для работы с данными
- •Макрокоманды для управления Access
- •Макрокоманды для управления объектами
- •Макрокоманды для импорта и экспорта данных
- •Макрокоманды для решения задач программирования
- •Задание
- •Лабораторная работа № 10. Связывание макросов с событиями, отладка макросов, макрогруппы, связь с меню
- •События базы данных
- •События, связанные с клавиатурой и мышью
- •События данных
- •События управления объектами
- •События печати
- •Лабораторная работа № 12. Работа с приложениями и программами. Оформление меню
- •Инструкция выбора select
- •Задание условий в предложении where
- •Применение агрегатных функций и вложенных запросов в инструкции Select
- •Вложенные запросы в инструкции выбора
- •Задание Контрольные вопросы Лабораторная работа № 14. Работа с инструкциямиDdLиDmLязыкаSql
- •Инструкции определения данных (ddl)
- •Создание индекса инструкцией Create Table
- •Создание индекса инструкцией Create Index
- •Создание индекса инструкцией Alter Table
- •Инструкции манипулирования данными (dml)
- •Задание
- •Контрольные вопросы
- •Оглавление
Применение агрегатных функций и вложенных запросов в инструкции 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.