1.2 Технология разработки запросов
Основное назначение любой информационной системы состоит в предоставлении пользователю необходимой и достоверной информации.
Обработка информации, содержащейся в таблицах БД, осуществляется с помощью запросов.
Запросы представляют собой некоторый набор команд, предназначенных для поиска и обработки информации в таблицах по заданным пользователем условиям (значениям полей). В системе ACCESS в зависимости от выполняемых действий можно создавать следующие виды запросов:
на выполнение действий (на выборку);
обновление;
добавление;
удаление;
создание таблиц.
Каждый из указанных видов запросов может отличаться технологией их создания и формой представления информации. В зависимости от технологии создания запросы можно подразделить на постоянные и параметрические.
Постоянные запросы – это запросы, условие выбора информации в которых не меняется в течение длительного времени.
Параметрические запросы – это запросы, параметры выбора информации в которых меняются.
Результатом выполнения запросов являются динамические таблицы. По форме динамические таблицы могут быть двух видов:
таблицы, структура которых соответствует исходной таблице (таблицам) БД;
таблицы, структура которых отличается от исходной таблицы (таблиц) БД, – так называемые кросс-таблицы.
Структура кросс-таблицы отличается от структуры исходной таблицы БД тем, что заголовками столбцов в такой таблице являются не имена, а значения выбранных полей. Такие таблицы формируются с помощью особых видов запросов – перекрестных запросов.
Перекрестные запросы – это запросы, которые применяются для выбора информации с одновременным группированием данных по значениям отдельных полей. При таком запросе данные формируются в виде кросс-таблицы.
Способы создания запросов
В ACCESS пользователю предлагается два способа создания запросов:
1) конструирование с помощью мастеров – в режиме Конструктор;
2) программирование – в режиме SQL.
Создание запроса в режиме Конструктор выполняется с помощью системы мастеров. В этом случае пользователь должен указать параметры запроса в окне конструирования, используя при этом предоставляемые мастером возможности. ACCESS в этом случае автоматически формирует код программы в виде специальной последовательности команд языка SQL.
При программировании запроса в режиме SQL пользователь должен описать все выполняемые запросом действия с помощью команд языка SQL.
Возможности конструирования запросов в режиме Конструктор достаточны для создания практически любых задач обработки информации в таблицах БД. Технологию конструирования запросов рассмотрим на примере СУБД ACCESS 2000.
Разработка запроса в режиме конструктора
В СУБД ACCESS 2000 разработка запроса может выполняться двумя способами:
самостоятельное создание нового запроса;
создание запроса с помощью мастеров.
При любом способе необходимо открыть окно элементов БД. При активизации кнопки Запросы окна объектов БД открывается окно (рисунок 1.8), содержащее все запросы БД. (Все дальнейшие примеры будет рассмотрены на основе базы данных «Учебный процесс»).
Рисунок 1.8 – Окно выбора режима запроса
При создании запроса пользователь может выбрать следующие варианты конструирования запросов:
создание запроса в режиме Конструктор;
создание запроса с помощью мастера.
При выборе первого способа открывается окно Создание запроса, в котором пользователю предоставляются следующие режимы разработки запроса (рисунок 1.9):
самостоятельное конструирование запроса (режим Конструктор);
конструирование запроса с помощью мастеров – режимы:
простой запрос;
перекрестный запрос;
повторяющиеся записи;
записи без подчиненных.
Рисунок 1.9 – Окно выбора типа запроса
Создание запросов с помощью Конструктора запросов
При создании запросов с помощью Конструктора запросов необходимо выполнить следующие действия.
Открыть Конструктор запросов.
В открывшемся окне Добавление таблицы (рисунок 1.10) выбрать таблицу или таблицы, на основе которых составляется запрос (команда Добавить). Выбор осуществляется щелчком мыши по имени соответствующей таблицы. При этом в окне конструктора появится таблица с именами полей.
После ввода таблицы (таблиц) щелкнуть по кнопке Закрыть.
Переместить необходимые для запроса поля таблицы в поля окна Конструктор запросов.
Установить порядок сортировки записей по значениям каких-либо полей (например, сортировать записи в алфавитном порядке по полю ФИО.
Определить необходимость вывода на экран значений полей. Если «Да», то щелкнуть мышью по квадратику.
Ввести в строку «Условие отбора» соответствующие значения полей, по которым производится отбор данных из таблиц.
В процессе конструирования запроса можно производить проверку его выполнения. Для этого достаточно щелкнуть мышью по кнопке Выполнение запроса на панели инструментов.
Рисунок 1.10 – Окно Конструктора запросов
Мы рассмотрели технологию создания запроса на выборку. На рисунке 1.11 показан пример заполнения бланка запроса на выборку.
Технология проектирования других видов запросов аналогична, но при этом перед закрытием запроса следует выбрать из списка необходимый вид.
По окончании конструирования запроса его необходимо закрыть (щелкнуть по соответствующей кнопке окна Конструктор). При этом откроется диалоговое окно, в котором будет предложено задать имя запросу.
Правила составления условий отбора данных
При задании условий отбора данных необходимо соблюдать следующие правила.
Перед вводом значения текстового (символьного) поля должен стоять знак «=».
Вводимая строка символов должна быть заключена в кавычки. Данное правило, если вы забыли его соблюсти, ACCESS выполнит сам.
Математические условия выборки определяются известными операторами сравнения (=,< >, <, >, <=, >=).
Кроме этих операторов могут применяться специальные операторы сравнения BETWEEN, IN, LIKE (смотри таблицу 1.2).
Рисунок 1.11 – Пример заполнения бланка запроса на выборку
4. При составлении условий выборки по полям Дата/Время могут применяться условия (функции), которые при составлении запроса вводятся как вычисляемые поля (таблица 1.3). Если необходимо выбрать записи, отвечающие одновременно нескольким параметрам, значениям нескольких полей, что соответствует логическому условию И (AND), то соответствующие значения полей вводятся в строку «Условие отбора».
Таблица 1.3 – Функции, применяемые для задания свойств или условий выборки в полях типа Дата/Время
Функция |
Значение |
Day |
Устанавливает условие выборки по числам месяца в диапазоне от 1 до 31 |
Month |
Устанавливает условие выборки по месяцам в диапазоне от 1 до 12 |
Year |
Устанавливает условие выборки по годам в диапазоне от 100 до 9999 |
Weekday |
Устанавливает условие выборки по дням недели от 1 (воскресенье) до 7 (суббота) |
Hour |
Устанавливает условие выборки по часам суток от 0 до 23 |
Datepart «q» или «ww» |
Устанавливает условие выборки по диапазонам времени (номер недели, номер квартала). Записывается так: Datepart «q» — для выбора по кварталам; Datepart «ww» — для выбора по неделям (q принимает значения от 1 до 4, ww принимает значения от 1 до 53) |
Date () |
Устанавливает текущую дату как условие выборки, например условие «<Date()-15» означает, что будут выбраны все записи, дата которых меньше текущей на 15 дней |
Если выбор записей необходимо произвести по значениям нескольких полей, связанным отношением исключающего ИЛИ (OR), то соответствующие значения вводятся в ячейки строки «ИЛИ».
Ввод условий отбора данных непосредственно в строки Конструктора запросов мы рекомендуем при конструировании постоянных запросов.
При конструировании параметрических запросов ввод условий отбора данных мы рекомендуем производить через формы.
Конструирование перекрестных запросов
Перекрестные запросы, результатом выполнения которых являются кросс-таблицы, целесообразно создавать для анализа числовых полей в таблицах или запросах.
Например, в представленном ниже примере необходимо было разработать запрос, который позволил бы на основе таблицы «Студент» просмотреть адреса проживания студентов из различных групп в различных городах.
В результате выполнения запроса необходимо получить динамическую таблицу (кросс-таблицу) «Распределение адресов проживания студентов из учебных групп в различных городах» (таблица 1.4).
Таблица 1.4 – Распределение адресов проживания студентов из учебных групп в различных городах
Группа/Город |
Оренбург |
Орск |
… |
Бузулук |
Группа 1 |
10 |
3 |
… |
2 |
Группа … |
… |
… |
… |
… |
Группа N |
8 |
3 |
|
10 |
Последовательность создания перекрестного запроса практически не отличается от технологии конструирования запросов, описанной выше.
Для начала проектирования такого запроса необходимо выбрать режим его создания, например Конструктор или Перекрестный запрос.
При выборе режима Конструктор необходимо в меню Запрос щелкнуть по кнопке Перекрестный; при этом окно Конструктора запроса примет вид, показанный на рисунке 1.12.
В перекрестном запросе должно быть три поля.
Одно поле представляет собой заголовки строк, второе поле определяет заголовки столбцов, а третье поле должно содержать значение соответствующего поля исходной таблицы.
На рисунке 1.13 представлен результат выполнения этого запроса.
Рисунок 1.12 – Окно конструирования перекрестного запроса
Рисунок 1.13 – Результат перекрестного запроса