
- •Министерство образования и науки Российской Федерации
- •Банки и базы данных
- •Введение
- •1 Задания для выполнения расчетно-графической работы
- •1.1 Исходные данные
- •1.2 Задачи расчетно-графической работы
- •2 Структура расчетно-графической работы
- •2.1 Пояснительная записка
- •2.2 Графическая часть
- •5 Реализация приложения базы данных в субд Access
- •5.1 Таблицы
- •5.2 Запросы
- •5.3 Формы
- •5.4 Оформление формы и ее элементов
- •Контрольные вопросы для подготовки к защите ргр
- •Библиографический список
- •Приложение а (обязательное) Варианты предметных областей для проектирования бд
- •Приложение б (обязательное) Образец титульного листа и бланка задания на ргр
- •Министерство образования и науки Российской Федерации
- •Пояснительная записка
- •Продолжение приложения б
- •Приложение в (обязательное) Перечень ключевых слов
- •Содержание
- •Банки и базы данных
5.2 Запросы
Запросы обеспечивают быстрый и эффективный доступ к данным, хранящимся в таблице. Применение запросов дополняет возможности таблиц Access: разрешает использовать вычисляемые поля, сортирует записи таблицы согласно указанному ключу (в таблице они сортируются по первичному ключу) и пр..
На основании запроса можно разработать форму (отчет). Это не отличается от процесса создания формы (отчета) на основе таблицы.
5.2.1 Создание запросов
Для создания запроса в окне базы данных следует выбрать кнопку Создать и далее в окне Новый запрос выбрать режим его создания: Конструктор, Простой запрос, Перекрёстный запрос, Повторяющиеся записи, Записи без подчинённых.
Режим Конструктор на первом шаге создания запроса требует указать, какие добавить таблицы в бланк запроса. Список созданных пользователем таблиц выводится. Количество добавляемых в запрос таблиц определяет пользователь из соображений решаемого вопроса, т.е. из каких таблиц можно получить данные по поставленному вопросу. Выбранные в бланк запроса таблицы необходимо связать линиями связи через одноимённые поля, выбрав подходящий тип связи. Связь устанавливается буксировкой поля из одной таблицы в другую. Если схема связи для таблиц была установлена заранее, то для выбираемых таблиц автоматически добавляются связи.
5.2.2 Итоговые запросы
При необходимости проанализировать данные на поиск статистических функций, для каких либо данных можно воспользоваться итоговыми запросами. В итоговых запросах используются два типа полей:
|
|
|
|
Дополнительно можно включить еще поля для определения условий.
Чтобы составить итоговый запрос, находясь в режиме конструктора запроса, следует выбрать Вид/Групповые операции. В результате чего в бланке запроса появиться строка Групповые операции. Затем для соответствующего поля вызвать раскрывающийся список функций итоговых расчетов (щёлкнув курсором мышки в строке групповые операции бланка запроса), в нём необходимо выбрать функцию “Группировка”. Например, если имеются отношения ПРЕПОДАВАТЕЛИ с их атрибутами и ШТАТНОЕ_РАСПИСАНИЕ, то можно подсчитать средние оклады по каждой кафедре. Для этого группировка выполняется по полю код_кафедры, а вычисление функции AVG (среднего) для поля оклад.
5.2.3 Запрос к связанным таблицам
Такие запросы создают, если в одном запросе необходимо обработать информацию одновременно из нескольких таблиц. При этом автоматически учитывается связь между таблицами.
Откройте окно конструктора запроса и добавьте таблицы, в которых содержится необходимая информация. Если ранее с помощью команды Схема данных была установлена связь между таблицами, то Access определит это автоматически. Эта связь будет отображена в виде линии, проведенной между полями таблиц с обозначением вида связи (например, 1:∞). Если связь между таблицами отсутствует, необходимо ее установить.
Вначале необходимо определить параметры связи. Укажите на соединительную линию и выберите команду Вид/Параметры объединения. В результате откроется диалоговое окно, в котором предлагаются три опции для определения параметров связи. Выберите подходящую из опций и нажмите ОК.
5.2.4 Запросы удаления
Удаление записей вручную с помощью команд Правка/Удалить занимает много времени, а также сопровождается часто ошибками. Для автоматического удаления группы записей создается запрос на удаление.
В режиме конструктора запроса выберите таблицу, в которой будет производиться удаление, в бланке запроса установите критерии (условия) отбора записей для удаления. Затем просмотрите результат выполнения запроса, отображаемый в режиме таблицы. Лишь в том случае, если в результате запроса присутствуют только подлежащие удалению записи, можно преобразовать запрос выбора в запрос удаления.
Для этого в строке меню выбрать Запрос/Удаление. После этого Access выключает в бланке запроса строки “Сортировка” и “Вывод на экран”. Для запросов удаления эти строки не нужны. Кроме того, для всех колонок бланка запроса в новой строке “Удаление” отображается текст “Условие”. Однако критерии при этом не меняются.
Если выполнить запрос выбором кнопки Выполнить, то Access не отобразит на экране результат выполнения запроса. Вместо него появиться сообщение о том, сколько записей будет удалено в исходной таблице. Можно прервать процесс удаления нажатием кнопки Отмена. Нажатие кнопки ОК приводит к безвозвратному удалению записей, удовлетворяющих критериям запроса.
Инструкция DELETE
Назначение: создание запроса на удаление записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют условию WHERE.
Пример
Удалить записи о преподавателях, которые занимают должность «доцент» и не имеют ученой степени (код_учен_степени=0). При этом в схеме данных необходимо при обеспечении целостности установить каскадный режим удаления для связей таблицы Преподаватели.
DELETE Преподаватели.*, Преподаватели.должность, Преподаватели.код_учен_степени
FROM Преподаватели
WHERE (((Преподаватели.должность)="доцент") AND ((Преподаватели.код_учен_степени)=0));
5.2.5 Запросы на обновление
При необходимости выполнения одинаковых замен воспользуйтесь запросом на обновление. Для этого выберите Запрос/Обновление. При этом будут выключены строки “Вывод на экран” и “Сортировка” в бланке запроса. Вместо них включается новая строка “Обновление”. В эту строку следует ввести новые выражения для заменяемых записей. Обратите внимание, что тип данных выражения должен совпадать с типом данных поля исходной таблицы. Замена выполняется аналогично запросу на удаление - сначала выдается предупреждение, что имеется некоторое количество записей, удовлетворяющих условию отбора, при дальнейшем выборе кнопки ОК обновление будет выполнено.
Инструкция UPDATE
Назначение: создание запроса на обновление записей, который изменяет значение полей указанной таблицы на основе заданного условия отбора.
Пример.
Увеличить в штатном расписании на 10 % оклады преподавателей, имеющих разряды ниже 15.
UPDATE Штат_расписание SET Штат_расписание.оклад = [оклад]*1.1
WHERE (((Штат_расписание.разряд)<15));
5.2.6 Перекрестные запросы
Такие запросы предназначены для отображения данных итоговых запросов, когда данные сгруппированы по нескольким полям.
Выберите из меню команду Запрос/ Перекрестный и перейдите в режим SQL для написания инструкции перекрестного запроса.
Инструкция TRANSFORM
Назначение: создание перекрестного запроса (запрос, возвращающий данные в виде электронной таблицы, используя указанные поля как заголовки строк и столбцов, и способный возвращать итоговые данные). Перекрестный запрос позволяет просматривать данные в форме сводной таблицы, более компактной чем представление, даваемое запросом на выборку.
Пример
Создать перекрестный запрос, показывающий распределение суммарной часовой нагрузки каждой кафедры по семестрам. Номера семестров должны определять заголовки столбцов слева направо, а названия кафедр – заголовки строк сверху вниз.
TRANSFORM Sum(Дисциплина.количество_часов) AS [Cумма_часов_за_семестр]
SELECT Кафедры.кафедра
FROM Кафедры INNER JOIN (Преподаватели INNER JOIN (Дисциплина INNER JOIN ведет ON Дисциплина.дисциплина = ведет.дисциплина) ON Преподаватели.код_преподавателя = ведет.код_преподавателя) ON Кафедры.код_кафедры = Преподаватели.код_кафедры
GROUP BY Кафедры.кафедра
PIVOT Дисциплина.семестр;