УМК Лабораторный практикум ПРОЕКТИРОВАНИЕ ЗАПРОСОВ

advertisement
УМК
Лабораторный практикум
ПРОЕКТИРОВАНИЕ ЗАПРОСОВ
Классификация запросов ............................................................................................................................................ 2
Конструирование запросов ......................................................................................................................................... 3
Технология создания запроса на выборку ............................................................................................................. 3
Добавление полей в запрос ..................................................................................................................................... 6
Удаление полей из запроса ..................................................................................................................................... 6
Удаление таблиц из запроса ................................................................................................................................... 6
Установка критериев отбора записей .................................................................................................................... 6
Сортировка данных в запросе ................................................................................................................................ 7
Отображение результатов запроса ......................................................................................................................... 7
Создание вычисляемых полей ................................................................................................................................ 8
Использование функций в вычисляемых полях ................................................................................................. 10
Параметры запроса .................................................................................................................................................... 11
Использование групповых операций в запросах .................................................................................................... 12
Назначение групповых операций ......................................................................................................................... 12
Создания запроса с использованием групповых операций ............................................................................... 12
Запрос с функцией Sum ........................................................................................................................................ 13
Запрос с функцией Count ...................................................................................................................................... 15
Многотабличные запросы на выборку данных....................................................................................................... 16
Запросы-действия ...................................................................................................................................................... 17
Конструирование запроса на создание таблицы ................................................................................................. 17
Конструирование запроса на обновление ........................................................................................................... 18
Конструирование запроса на добавление ............................................................................................................ 18
Конструирование запроса на удаление................................................................................................................ 19
1
Запросы – это отдельный объект базы данных, который отбирает
записи из таблицы и помещает их в динамический набор данных. Изменения
данных в таблице результатов запроса на выборку будут внесены в базовые
таблицы.
Запрос позволяет выбрать необходимые данные из одной или
нескольких взаимосвязанных таблиц, произвести вычисления и получить
результат в виде виртуальной таблицы. Полученная таблица может
использоваться в качестве источника данных в формах, отчетах, страницах
доступа к данным, других запросах.
С помощью запроса можно выполнить следующие виды обработки
данных:
 включить
в
результирующую
таблицу
запроса
заданные
пользователем поля;
 выбрать записи, удовлетворяющие условиям отбора;
 произвести вычисления в каждой из полученных записей;
 сгруппировать записи, которые имеют одинаковые значения в
одном или нескольких полях, в одну запись и одновременно для
других полей образовавшихся групп выполнить одну из
статистических функций;
 произвести обновление полей в выбранном подмножестве
записей;
 создать новую таблицу базы данных, используя данные из
существующих таблиц;
 удалить выбранное подмножество записей из таблицы базы
данных;
 добавить выбранное подмножество записей в другую таблицу.
Классификация запросов
Запросы классифицируются различным способом.
2
По числу обрабатываемых таблиц запросы делятся на однотабличные
и многотабличные (в последнем случае все таблицы/запросы должны быть
связанными).
По типу алгоритмов обработки различают запросы:
 запросы на выборку – результат запроса отображается только на
экране, может использоваться для создания форм, отчетов,
страниц доступа, других запросов;
 параметрические запросы позволяют определить одно или
несколько условий отбора во время выполнения запроса;
 перекрестные запросы – создание сводной таблицы, содержащей
групповые итоги;
 запрос на создание таблицы - результат сохраняется в новой
постоянной таблице;
 запросы
на
обновление,
добавление,
удаление
являются
запросами действия, в результате которых изменяются данные в
таблицах.
По типу языка запросов в MS Access запросы делятся:
 QBE-запросы (Query By Example — запрос по образцу),
параметры которых устанавливаются в окне конструктора
запросов;
 SQL-запросы (Structured Query Lanquage — структурированный
язык запросов), при создании которых применяются операторы и
функции языка SQL.
В MS Access запросы хранятся как SQL-запросы. Запросы QBE
транслируются на язык SQL.
Конструирование запросов
Технология создания запроса на выборку
Основные принципы конструирования запроса заложены в технике
конструирования запроса на выборку.
3
Результаты выполнения запроса отображаются в виде таблицы,
существующей до ее закрытия. При сохранении запроса сохраняется не
таблица результатов, а содержимое окна конструктора запроса. Запрос на
выборку может строиться на основе таблиц базы данных и на основе ранее
созданных запросов. Результаты выполнения запроса выводятся в режиме
таблицы.
1. В окне открытой базы данных перейдите на вкладку Главная, в
группе Другие выберите команду Конструктор Запросов.
2. В диалоговом окне Добавление таблицы добавьте таблицы,
используемые при разработке запроса.
Рис. 1. Диалоговое окно для выбора таблиц и запросов для схемы данных запроса
3. Переместите в бланк запроса требуемые поля.
4. Задайте критерии отбора.
5. Выполните запрос.
6. Сохраните запрос.
Окно конструктора запросов разделено на две панели. Верхняя панель
содержит схему данных запроса, которая включает выбранные для данного
запроса таблицы. Таблицы представлены списками полей. При составлении
запроса на основе нескольких таблиц между ними необходимо установить
связь, задав отношение между полями. Нижняя панель является бланком
запроса, который нужно заполнить.
4
Каждый столбец бланка содержит информацию о каком-либо одном
поле, включаемом в запрос. Поля могут использоваться:
1) для включения их значений в таблицу результата;
2) для упорядочения строк в таблице результата по значениям поля;
3) для задания условий отбора записей в таблицу результата по
значениям данного поля;
4) для выполнения группировки по значениям данного поля;
5) для подсчета итоговых значений по данному полю при
группировке записей в запросе.
Каждый столбец бланка запроса состоит из нескольких строк, в
которых указываются параметры использования каждого поля в запросе:
 в строке ПОЛЕ указываются имена полей, включаемых в запрос;
 в строке ВЫВОД НА ЭКРАН отмечаются поля, значения
которых включаются в результирующую таблицу (некоторые
поля включаются в запрос только для указания условия отбора
записей базовых таблиц в таблицу результата);
 в строке СОРТИРОВКА можно указать порядок сортировки
записей результирующей таблицы по значениям выбранного
поля;
 в строках УСЛОВИЕ ОТБОРА (объединяются логическим ИЛИ)
можно задать условия отбора записей по значениям поля.
Рис. 2. Окно конструктора запросов
5
Добавление полей в запрос
Для включения нужных полей из таблиц в соответствующие столбцы
запроса можно воспользоваться следующими приемами:
1) в первой строке бланка запроса Поле щелчком мыши вызвать
появление кнопки списка и выбрать из списка нужное поле.
Список содержит все поля таблиц, представленных в схеме
данных запроса;
2) перетащить нужное поле из списка полей таблицы в схеме
данных запроса в первую строку бланка запроса;
3) дважды щелкнуть на имени таблицы в схеме данных запроса,
перетащить выделенные поля в первую строку бланка запроса.
Удаление полей из запроса
1) выделите столбец, в котором находится поле для удаления;
2) нажмите клавишу Delete;
3) если нужно скрыть поле, по которому производится отбор
записей, в нижней части конструктора запроса погасите флажок в
строке Вывод на экран.
Удаление таблиц из запроса
1) выделите таблицу в верхней части окна конструктора запроса;
2) нажмите клавишу Delete.
Установка критериев отбора записей
С помощью критериев отбора указывается, какие записи нужно
выбирать в таблицах и отображать в таблице результатов. Критерии отбора
указываются для одного поля и нескольких полей. Если условия отбора
указаны в одной строке, то они соединены операцией И, т. е. требуется
выполнение всех условий, чтобы запись попала в отобранное подмножество.
Если условия отбора указаны в разных строках, то они соединены операцией
ИЛИ, т. е. требуется выполнение одного из условий, чтобы запись попала в
отобранное подмножество.
6
Сортировка данных в запросе
Записи в результирующей таблице могут быть отсортированы по
возрастанию
или
по
убыванию.
Можно
выполнять
сортировку по
содержимому нескольких полей (до десяти).
Для выполнения сортировки:
1) перейдите в столбец бланка запроса, содержащий имя поля, по
которому необходимо произвести сортировку;
2) укажите способ сортировки в строке Сортировка.
Отображение результатов запроса
Для выполнения запроса выберите команду Выполнить на вкладке
Работа с запросами в группе Результаты.
Рассмотрим примеры конструирования запросов на выборку с
условиями отбора.
Примеры.
1. Выбрать товар с кодом Т101 (критерий – точное соответствие).
2. Выбрать товары с ценой выше 4000 руб. (критерий – логическое
выражение).
7
Таблица 1.
Условие отбора
Результирующая таблица
3. Выбрать товары с кодом Т101 и Т402 (два условия по одному полю).
Таблица 2.
Условие отбора
Результирующая таблица
4. Выбрать договора 2010 года (дата хранится в формате дд.мм.гг).
Таблица 3.
Условие отбора
Результирующая таблица
Создание вычисляемых полей
Таблицы MS Access не могут содержать вычисляемые поля.
Вычисления выполняются в запросах. Для создания вычисляемых полей
используются арифметические выражения и встроенные функции MS Access.
Выражение вводится в бланк запроса в ячейку строки ПОЛЕ. После ввода в
ячейку выражения перед ним автоматически добавляется имя поля в виде
ВыражениеN (где N – номер вычисляемого поля в запросе). Имя
вычисляемого поля отделяется от выражения двоеточием. Например:
Выражение1: [Цена]*[Количество], где Цена и Количество – имена
полей.
8
Имя можно изменить в бланке запроса или выбрав в контекстном меню
команду Свойства и набрав нужный текст в строке Подпись.
Пример.
В таблице Товар имеются поля Цена и Ставка_Ндс, вычислить цену
с учетом НДС.
Выражение
можно
ввести
с
клавиатуры
или
воспользоваться
построителем выражений. Построитель позволяет выбрать необходимые в
выражении имена полей из таблиц, запросов, форм, знаки операций,
функции.
Вызовите построитель выражений, нажав на панели конструктора
запросов кнопку Построить
или выбрав Построить в контекстно-
зависимом меню (курсор мыши должен быть установлен в строке Поле
вычисляемого поля).
В левой части окна Построитель выражений выберите таблицу
Товар, на основе которой построен запрос. Справа отобразится список ее
полей. Последовательно выбирайте нужные поля, нажимая кнопку Вставить,
и знаки операций. При этом в верхней части окна сформируется выражение.
Рис. 3. Окно построителя выражений
9
Использование функций в вычисляемых полях
В вычисляемых полях и условиях отбора можно использовать
встроенные функции. В Access и VBA определено примерно 150 функций.
Перечислим далее некоторые сгруппированные по назначению функции.
Функции даты и времени. Функция Month(дата) выделяет месяц из
значения поля, содержащего дату, и возвращает целое число из интервала от
1 до 12 включительно, обозначающее месяц года.
Функция MonthName(месяц[; имя]) преобразует числовое обозначение
месяца в строковое выражение, указывающее полное (имя = ложь) или
сокращенное
(имя = истина)
название
месяца.
Например
MonthName([срок_пост];истина) возвращает сокращенное название месяца.
По умолчанию берется значение «ложь» (название не сокращается).
Функции обработки текста. Используются при работе с символьными
строками.
Format (выражение[;формат [;первый_день_недели [;первая_неделя_года]]]).
Функции преобразования типа данных. Позволяют задавать тип данных
для числовых значений, что исключает необходимость подбора наиболее
подходящего типа данных системой.
Математические
и
тригонометрические
функции.
Выполняют
операции над числовыми значениями, которые невозможно выполнить с
помощью стандартных арифметических операторов.
Финансовые функции. Служат для расчета процента возврата по
инвестициям, амортизационных отчислений, годовой ренты и т. д.
Статистические функции. Используются при работе над полями
подмножества записей, вычисляют среднее значение, сумму, минимальное,
максимальное значения.
Пример.
Выбрать все накладные, по которым производилась отгрузка в
заданном месяце. В таблице Накладная дата отгрузки хранится в поле
ДАТА_ОТГР типа Дата/время.
10
–
Format([НАКЛАДНАЯ]![ДАТА_ОТГР];"mmmm")
эта
функция
возвратит полное название месяца.
Format([НАКЛАДНАЯ]![ДАТА_ОТГР];"mm")
–
эта
функция
возвратит номер месяца.
Month([НАКЛАДНАЯ]![ДАТА_ОТГР])
–
эта функция возвратит
номер месяца
MonthName(Month([НАКЛАДНАЯ]![ДАТА_ОТГР])) – эта функция
возвратит полное название месяца
Пример
1. Выбрать договора 2010 года
Построить новое поле: из даты выделить год, используя функцию
Year() из категории Дата и время.
Таблица 4.
Условие отбора
Результирующая таблица
Параметры запроса
Чтобы
сделать
запрос
более
универсальным,
можно
вместо
конкретного значения включить в запрос параметр. Для этого в бланке
запроса в строке условия отбора вводится текст в квадратных скобках,
который будет выводиться в качестве подсказки в процессе диалога.
Таблица 5.
Условие отбора
Диалоговое окно
11
[Введите код товара1] or[введите код товара2]
Between[Введите нач_дату] and [введите кон_дату]
Использование групповых операций в запросах
Назначение групповых операций
Групповые
операции
позволяют
выделить
группы
записей
с
одинаковыми значениями в указанных полях и использовать для этих групп
одну из статистических функций.
В Access предусматривается девять статистических функций.
1) Sum – сумма значений некоторого поля для группы;
2) Avg – среднее от всех значений поля в группе;
3) Mах, Min – максимальное, минимальное значение поля в группе;
4) Count – число значений поля в группе без учета пустых значений;
5) StDev – среднеквадратичное отклонение от среднего значения
поля в группе;
6) Var – дисперсия значений поля в группе;
7) First и Last – значение поля из первой или последней записи в
группе.
Результат запроса с использованием групповых операций содержит по
одной записи для каждой группы.
Создания запроса с использованием групповых операций
Для
создания
запроса
с
использованием
групповых
операций
формируется запрос на выборку. В бланк запроса включаются поля, по
которым надо произвести группировку, и поля, по которым надо произвести
статистические вычисления.
В бланк запроса добавить строку Групповая операция можно выбрав
команду Итоги на вкладке Работа с запросами в группе Показать или
скрыть.
12
Для поля, по которому необходимо произвести вычисления, нужно
заменить слово «группировка» на статистическую функцию. Выбрать
необходимую функцию можно через раскрывающийся список.
Рассмотрим конструирование запроса с групповой операцией на
примере таблицы Поставка_План.
Запрос с функцией Sum
Пример.
Определить, какое суммарное количество (в единицах измерения)
каждого товара должно быть отправлено покупателям по договорам. Все
данные о запланированном к доставке количестве товара указаны в таблице
Поставка_план.
Рис. 4. Окно конструктора запросов. Использование групповых вычислений
Замените подпись поля Sum-КОЛ ПОСТ на Заказано товаров. Для
этого перейдите в режим конструктора, в бланке запроса установите курсор
мыши на поле КОЛ_ПОСТ и нажмите правую кнопку. В контекстнозависимом меню выберите Свойства. В окне Свойства поля в строке
Подпись введите Заказано товаров.
13
Таблица 6.
Исходная таблица
Результирующая таблица
Подсчитать количество товара, заказанного в каждом месяце (дата поле Срок_поставки в таблице Поставка_план).
1. Выполните группировку по двум полям: КОД_ТОВ и СРОК_ПОСТ, в
котором хранится месяц поставки.
Рис. 5. Окно конструктора запросов. Группировка по двум полям
2. Подсчитать количество товара, заказанного в заданном месяце.
Предыдущий запрос дополните вводом параметра запроса в условие
отбора.
14
Рис. 6. Окно
конструктора запросов. Параметрический запрос
Выполните запрос. Открывшееся диалоговое окно позволит ввести
значение параметра запроса - Номер месяца.
Запрос с функцией Count
Определить, сколько раз отгружался товар по каждому из договоров.
Факт отгрузки фиксируется документом Накладная.
1. Создайте запрос на выборку на основе таблицы Накладная.
2. Из списка таблицы Накладная перетащите в бланк запроса поле
НОМ_ДОГ. По этому полю должна производиться группировка.
3. Необходимо подсчитать число строк с одинаковым номером
договора в таблице. Для этого используем функцию Count(), аргументом
можно указать любое поле таблицы, например НОМ_ДОГ.
4. Нажмите
кнопку
Групповые
операции.
Замените
слово
Группировка в одном из столбцов с именем НОМ_ДОГ на функцию Count.
15
Рис. 7. Запрос для
подсчета числа отгрузок по договорам
Сохраните запрос под именем Число отгрузок по договорам.
Выполните запрос.
Многотабличные запросы на выборку данных
Многотабличный запрос позволяет сформировать записи результата
путем объединения взаимосвязанных записей из таблиц базы данных и
выбора из них нужных полей и записей. Многотабличный запрос
осуществляет объединение данных, которые на этапе проектирования были
разделены на множество таблиц, отвечающих требованиям нормализации.
Примеры.
1. Подсчитать суммарное количество каждого товара, которое должно
быть поставлено покупателям по договорам. В результирующую таблицу
добавить
поле
Наименование
товара.
Так
как
в
таблице
Поставка_план имеется только поле Код_товара, в запрос необходимо
добавить таблицу Товар. (См. пример с использованием функции Sum()).
2. В
табличной
части
документа
Договор
заполнить
столбец
сумма_поставки.
Запрос на основе двух таблиц Постака_план и Товар.
Из таблицы Поставка_план в бланк запроса выберите все поля,
кроме Сумма_поставки. Из таблицы Товар - поле Цена.
16
Построить вычисляемое поле:
[Поставка_план]![кол_пост] *Товар]![цена]
Рис. 8. Вычисляемое поле
3. Определить общую сумму по каждому договору.
Запрос строится на основе предыдущего запроса.
В
бланк
запроса
добавьте
поля:
Номер_договора
и
Сумма_поставки.
Добавьте в бланк запроса строку Групповая операция.
Для поля Сумма_поставки выберите в строке Групповая операция
функцию Sum().
Запросы-действия
Конструирование запроса на создание таблицы
Запрос на создание таблицы используется для сохранения результата
запроса в объекте Таблица, а не в объекте Запрос.
Пример
Создать таблицу Товар1, включив в нее записи с кодами Т101 и Т901
из таблицы Товар.
1. Создайте запрос на выборку.
2. Выполните запрос (чтобы проверить).
3. Перейдите в режим Конструктор.
4. Выберите команду Создание таблицы.
17
5. Введите имя создаваемой таблицы Товар1.
6. Выполните запрос.
В списке таблиц появится таблица Товар1.
Конструирование запроса на обновление
Позволяет выполнять обновление значений полей базовых таблиц в
записях, удовлетворяющих некоторому условию.
Пример
В таблице Товар1 уменьшите цену товара Т101 на 10%
1. Создайте запрос на выборку.
2. Выполните запрос (чтобы проверить).
3. Перейдите в режим Конструктор.
4. Выберите команду Обновление.
5. В строке Обновление для поля цена постройте выражение:
[товар1]![цена] *0,9.
6. Выполните запрос.
Конструирование запроса на добавление
18
С помощью запроса на добавление производится добавление записей
из таблицы запроса в другую таблицу.
Примеры.
В таблице Товар1 изменить код товара Т101 на Т1010.
Добавить запись с кодом товара Т1010 из таблицы Товар1 в таблицу
Товар.
1. Создайте на основе таблицы Товар1 запрос на выборку, отобрав
записи, которые нужно добавить в другую таблицу.
2. Проверьте запрос.
3. Перейдите в режим Конструктор.
4. Выполните команду Добавление.
5. Выберите имя таблицы Товар.
6. Выполните запрос.
Конструирование запроса на удаление
Позволяет удалить записи по условию из одной таблицы или
нескольких взаимосвязанных таблиц. Для создания запроса выполните
действия.
1. Создайте окно Запроса на выборку, включив в него таблицы, из
которых требуется удалить записи.
2. С помощью команды Удаление преобразуйте запрос на выборку в
запрос на удаление, после чего в бланке запроса появится строка
УДАЛЕНИЕ.
3. Отбуксируйте (переместите) символ «*» из списка полей таблицы,
записи которой требуется удалить, в первый столбец бланка запроса. В
строке УДАЛЕНИЕ этого поля появится значение Из.
4. В остальных столбцах задайте условия отбора удаляемых записей.
5. Для предварительного просмотра подмножества удаляемых записей
нужно перейти из режима конструктора запроса в режим таблицы запроса.
6. Для удаления записей выполните команду Выполнить.
19
Результаты работы запроса зависят от установленных в схеме базы
данных отношений между таблицами и параметров целостности.
В списке объектов запросы-действия помечаются специальными
пиктограммами, указывающими какое действие должно быть выполнено.
20
Download