Урок
9, 10. Составление запросов в Microsoft Access.
Запросы являются
одним из основных инструментов выборки, обновления и обработки данных в
таблицах базы данных. Запрос позволяет сформировать пользовательское
представление о данных, не обязательно отвечающее требованиям нормализации.
Результат выполнения запроса — это новая, чаще всего временная, таблица,
которая существует до закрытия запроса.
Структура такой
таблицы определяется выбранными из одной или нескольких таблиц полями. Записи
формируются путем объединения записей таблиц, участвующих в запросе. Способ
объединения записей различных таблиц указывается при определении их связи.
Условия отбора, сформулированные в запросе, позволяют фильтровать записи,
составляющие результат объединения таблиц. Простейшие запросы могут быть
созданы с помощью мастера. Любой запрос можно создать в режиме конструктора.
Конструктор предоставляет удобное для пользователя диалоговое графическое
средство формирования запросов, с помощью которого легко может быть построен
сложный запрос.
Запрос строится на основе одной или нескольких
взаимосвязанных таблиц, позволяя объединять данные, содержащиеся в них. При
этом могут использоваться таблицы базы данных, а также сохраненные таблицы,
полученные в результате выполнения других запросов. Кроме того, запрос может
строиться непосредственно на другом запросе с использованием его временной
таблицы с результатами.
Назначение и виды
запросов
Запрос
позволяет выбрать необходимые данные из одной или нескольких взаимосвязанных таблиц,
произвести вычисления и получить результат в виде виртуальной таблицы.
Полученная таблица может использоваться в качестве источника данных в формах,
отчетах, страницах доступа к данным, других запросах. Через запрос можно
производить обновление данных в таблицах, добавление и удаление записей.
С помощью
запроса можно выполнить следующие виды обработки данных:
·
включить в результирующую таблицу запроса заданные
пользователем поля;
·
выбрать записи, удовлетворяющие условиям отбора;
·
произвести вычисления в каждой из полученных записей;
· сгруппировать записи, которые имеют одинаковые значения в
одном или нескольких полях, в одну запись и одновременно для других полей
образовавшихся групп выполнить одну из статистических функций;
·
произвести обновление полей в выбранном подмножестве
записей;
·
создать новую таблицу базы данных, используя данные из
существующих таблиц;
· удалить выбранное подмножество записей из таблицы базы
данных; "а добавить выбранное подмножество записей в другую таблицу.
Многотабличный
запрос позволяет сформировать записи результата путем объединения
взаимосвязанных записей из таблиц базы данных и включения, нужных полей из них.
В частности, при объединении двух нормализованных связанных одно-многозначными
отношениями таблиц, результирующая запись образуется на основе записи
подчиненной таблицы, в которую добавляются поля из связанной записи в главной
таблице. Заметим, что подобное объединение формирует новую ненормализованную
таблицу, в которой данные могут многократно дублироваться. Рассмотренный способ
формирования записей запроса задается при установлении связи между таблицами по
умолчанию. По умолчанию связи устанавливаются с параметром объединения первого
типа: объединение только тех записей, в которых значения полей связи обеих
таблиц совпадают. Могут устанавливаться и другие способы объединения таблиц.
Последовательное
выполнение ряда запросов позволяет решать достаточно сложные задачи, не
прибегая к программированию.
Access может быть
создано несколько видов запроса:
- запрос
на выборку — выбирает данные из взаимосвязанных таблиц и других запросов.
Результатом является таблица, которая существует до закрытия запроса. На
основе такого запроса могут строиться запросы других видов. Таблицу с
результатами запроса на выборку можно использовать для работы с данными в
таблицах, на которых построен запрос. Например, через таблицу запроса
можно корректировать данные в исходных таблицах базы данных. Запросы могут
служить источниками записей для форм, отчетов и страниц доступа к данным.
- запрос
на создание таблицы — также выбирает данные из взаимосвязанных таблиц и
других запросов, но, в отличие от запроса на выборку, результат сохраняет
в новой постоянной таблице.
- запросы
на обновление, добавление, удаление — являются запросами действия, в
результате выполнения которых изменяются данные в таблицах
Инструментальные
средства
Удобным
инструментальным средством создания запроса является графический конструктор —
одно из наиболее мощных средств Access. Принципы конструирования различных запросов
заложены в технике конструирования запроса на выборку, являющегося основой всех
видов запроса.
Запрос на
выборку позволяет достаточно просто выбрать данные из одной или нескольких
взаимосвязанных таблиц. Результаты выполнения запроса отображаются в виде
временной таблицы Поля, составляющие записи этой таблицы, указываются
пользователем в запросе. Записи формируются на основе записей в исходных
таблицах и связей между этими таблицами и фильтруются в соответствии с
заданными в запросе условиями отбора.
Таблица с
результатами запроса может применяться при дальнейшей обработке данных. В
запросе на выборку могут использоваться не только таблицы базы данных, но и
ранее созданные запросы, точнее — таблицы, являющиеся результатом их
выполнения. При этом, как правило, нет необходимости сохранять таблицы,
получаемые в результате выполнения ранее созданных запросов.
Однако в
ряде случаев непосредственное использование в запросе другого запроса
невозможно. В этом случае включаемый запрос надо преобразовать в запрос на
создание таблицы. Этот запрос сохраняет результат в новой таблице базы данных.
Далее эта таблица может использоваться при создании запроса.
Результаты
выполнения запроса выводятся в режиме таблицы. Окно запроса в режиме таблицы
аналогично окну просмотра таблицы базы данных. В этом режиме становится
активной панель инструментов Запрос
в режиме таблицы (Query Datasheet) с перечнем кнопок, аналогичным
тому, который представлен на панели Таблица
в режиме таблицы (Table Datasheet).
Несмотря
на то, что поля результирующей таблицы принадлежат, как правило, нескольким
таблицам базы данных, с ними можно работать так, как если бы они принадлежали
одной таблице. Можно менять данные в таблице результатов запроса на выборку, и
сделанные изменения будут внесены в базовые таблицы. Особенно важно, что,
несмотря на дублируемость данных, возникающую в результате объединения записей
таблиц, изменение единственного значения в таблице запроса автоматически
приводит к изменению всех повторяющихся в таблице запроса значений. Это
определяется тем, что через таблицу запроса данное меняется в исходной таблице,
где оно представлено один раз.
Язык
SQL.
Для извлечения данных из базы данных используется язык SQL (Structured Query Language — язык структурированных запросов). SQL — это язык программирования, который очень напоминает английский, но предназначен для программ управления базами данных. Каждый выполняемый запрос на самом деле основан на SQL. Понимание принципов работы SQL помогает создавать улучшенные запросы и упрощает исправление запросов, которые возвращают неправильные результаты.
SQL — это язык
программирования, предназначенный для работы с наборами фактов и отношениями
между ними. В программах управления реляционными базами данных, таких как
Microsoft Office Access, язык SQL используется для работы с данными. В отличие
от многих языков программирования SQL удобочитаем и понятен даже новичкам. Как
и многие языки программирования, SQL является международным стандартом,
признанным такими комитетами по стандартизации, как ISO(на английском языке) и ANSI(на
английском языке).
Инструкции
SELECT
Инструкция SELECT служит для описания набора
данных на языке SQL. Она содержит полное описание набора данных, которые
необходимо получить из базы данных, включая следующее:
- таблицы, в которых содержатся данные;
- связи между данными из разных источников;
- поля или вычисления, на основе которых отбираются данные;
- условия отбора, которым должны соответствовать данные, включаемые в результат запроса;
- · необходимость и способ сортировки.
Предложения SQL
Инструкция SQL состоит из нескольких частей, называемых предложениями.
Каждое предложение в инструкции SQL имеет свое назначение. Некоторые
предложения являются обязательными. В приведенной ниже таблице указаны
предложения SQL, используемые чаще всего.
ПРЕДЛОЖЕНИЕ SQL |
ОПИСАНИЕ |
ОБЯЗАТЕЛЬНОЕ? |
SELECT |
Определяет поля,
которые содержат нужные данные. |
Да |
FROM |
Определяет
таблицы, которые содержат поля, указанные в предложении SELECT. |
Да |
WHERE |
Определяет
условия отбора полей, которым должны соответствовать все записи, включаемые в
результаты. |
Нет |
ORDER BY |
Определяет
порядок сортировки результатов. |
Нет |
GROUP BY |
В инструкции SQL,
которая содержит статистические функции, определяет поля, для которых в
предложении SELECT не вычисляется сводное значение. |
Только при
наличии таких полей |
HAVING |
В инструкции SQL,
которая содержит статистические функции, определяет условия, применяемые к
полям, для которых в предложении SELECT вычисляется сводное значение. |
Нет |
Практическое задание.
Выполните лабораторную работу №3.