Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гурин_работа с базами.pdf
Скачиваний:
86
Добавлен:
26.03.2015
Размер:
961 Кб
Скачать
☆

30

Контрольные вопросы

1.Назначение связей в БД.

2.Между какими объектами устанавливаются связи в БД?

3.Главные и подчиненные таблицы в БД.

4.Процедура установления связей в БД.

5.Назначение режима Обеспечение целостности данных.

6.Назначение режима Каскадное обновление связанных полей.

7.Назначение режима Каскадное удаление связанных полей.

8.Как отредактировать существующую связь.

9.Как удалить существующую связь.

10.Как заполнить таблицу данными.

4. ЗАПРОСЫ В СУБД ACCESS

Формирование таблиц и заполнение их данными - это основной этап в создании БД. Хотя этот процесс необходим и достаточен с точки зрения хранения данных, он отнюдь не достаточен с точки зрения доступа и использования информации. А ведь именно последние две задачи являются в СУБД наиболее важными, так как информация для того и хранится в БД, чтобы ее можно было быстро извлечь и при необходимости обработать соответствующим образом.

Быстрый и эффективный доступ к хранящимся в таблицах данным обеспечивают запросы. Запросы используются также для обработки информации, хранящейся в таблицах: сортировки данных, проведения вычислений с данными, создания таблиц с выборочными данными, подведения итоговых результатов и т.п. Хорошо организованная БД обычно имеет сравнительно небольшое количество исходных таблиц, где хранятся данные, и большое количество разнообразных запросов, которые и обеспечивают все предъявляемые к БД требования и проводят все необходимые манипуляции с имеющейся в БД информацией.

Рис. 13. Диалоговое окно выбора способа создания запроса

31

При выполнении запроса СУБД Access выбирает нужные данные из соответствующей таблицы или собирает данные из разных таблиц, производит при необходимости их обработку и представляет результат в виде новой таблицы. При этом результат запроса не сохраняется, т.е. таблица запроса существует только как результат выполнения запроса, а в самом запросе сохраняется только инструкция по выборке и обработке данных. Таким образом, запрос в СУБД Access представляет собой некую программу, написанную на т.н. языке запросов SQL (Structured Query Language – язык структурированных запросов, англ., см. подробнее подраздел 4.3).

Для создания запросов СУБД Access 97 предлагает несколько вариантов (см. рис. 13). При этом в режиме Конструктор запрос создается полностью самим пользователем на основе специальной таблицы QBE (Query by Example – запрос по образцу, англ., см. рис. 16), а другие способы используют соответствующих Мастеров, где запрос создается полностью путем выбора предлагаемого готового варианта и по наводящим подсказкам.

4.1. Запрос на выборку данных

Для создания простого запроса на выборку данных, т.е. выбора только для просмотра необходимых полей таблицы или полей из совокупности связанных таблиц без обработки выбранной информации, следует в начальном окне БД (см. рис. 4) выбрать режим Запросы, нажав мышью на корешок соответствующей вкладки. Затем выполнить последовательно команды Создать/Простой запрос (см. рис. 4, 13). После этого включается Мастер, формирующий запрос в автоматическом режиме в ходе диалога. В результате сначала на экране появляется диалоговое окно с двумя подок-

нами: Таблицы/запросы и Выбранные поля (см. рис. 14).

Выбрав в окне Таблицы/запросы нужную таблицу, можно отобрать в ней для просмотра нужные поля, нажав после выбора мышью соответствующего поля таблицы в окне Доступные поля кнопку правее окна «>», либо сразу все поля таблицы, нажав кнопку «>>». Если же необходимо отобрать для просмотра поля сразу из нескольких связанных между собой таблиц, то после выбора полей из первой таблицы переходят в окне Таблицы/запросы к другой таблице и аналогичным образом добавляют нужные для просмотра поля.

После выбора полей таблицы Мастер Простой запрос открывает диалоговое окно, где необходимо задать имя для сформированного запроса и выбрать режим подробности выборки: подробный (вывод всех полей для каждой записи), что приводит к окончанию работы Мастера, либо итоговый для неповторяющихся записей, что соответствует т.н. Итоговому запросу, который требует дальнейшего диалога и будет рассмотрен в пособии ниже.

32

Рис. 14. Диалоговое окно создания Простого запроса на выборку

Создайте с помощью Мастера Простой запрос запрос на основе таблицы «Клиенты» с выбором всех полей для просмотра. Сохраните запрос под именем «Клиенты».

Необходимо заметить, что если выбирать для запроса поля сразу из нескольких таблиц, то в результате выполнения такого запроса в единой таблице будут собраны все записи, соответствующие запрашиваемым данным таблиц с повтором значений полей из главной таблицы. Это происходит вследствие того, что одной записи в главной таблице соответствует несколько записей в подчиненной таблице, и обеспечивается автоматически благодаря наличию межтабличных связей типа один-ко-многим, а также целостностью данных в БД.

Другие запросы, создаваемые с помощью Мастеров: Перекрестный,

Повторяющиеся записи, Записи без подчиненных, имеют более сложную структуру и будут разбираться в пособии в дальнейшем, после подробного рассмотрения основного режима формирования запросов – режима Конструктор. Именно в режиме Конструктор можно сформировать тот запрос, который вам нужен, поскольку рассмотренный выше пример использования Мастера не способен провести даже такую простую операцию обработки данных, как сортировка записей в таблице запроса.

4. 2. Создание запроса в режиме Конструктор

Для создания запроса в режиме Конструктор после выбора таблиц для запроса в окне Добавление таблицы щелчком мыши по кнопке Добавить (см. рис. 15) на экране появляется диалоговое окно Запрос на выборку, состоящее из двух частей (см. рис. 16): верхней, где представлены таблицы, на основе которых строится запрос, и нижней, где выби-

33

раются поля из таблиц и где, собственно говоря, непосредственно формируется запрос.

Рис. 15. Окно выбора таблиц из БД для запроса

Рис. 16. Окно организации запроса в режиме Конструктор

Для создания запроса необходимо прежде всего из диалогового окна Добавление таблицы выбрать и добавить в верхнюю половину диалогового окна Запрос на выборку те таблицы, из которых будут в дальнейшем выбраны поля длязапроса, послечегозакрытьдиалоговоеокноДобавлениетаблицы.

Нижняя часть диалогового окна Запрос на выборку называется бланком запроса по образцу, иначе QBE-бланком или QBE-областью. При этом количество строк в QBE-бланке может меняться в зависимости от вида запроса. На рис. 16 представлен бланкзапросапообразцуQBE, содержащийстроки:

34

•Поле – для запрашиваемых полей;

•Имя таблицы – для вывода имени таблицы, из которой выбирается поле;

•Сортировка – для проведения сортировки по этим полям;

•Вывод на экран – для вывода или нет выбранных запросом полей

на экран;

•Условие отбора – для ввода условий на выбор записей в соответствии с заданными условиями, причем условия по отдельным полям в этой строке соединяются операцией «и» (все условие верно только, если все составляющие его условия верны);

•Или – для ввода условий, которые соединяются с условием в вышерасположенной строке Условие отбора по принципу «или» (все условие верно, если хотя бы одно из составляющих его условий верно).

Для создания простого запроса на просмотр таблицы с проведением сортировки ее записей добавьте в диалоговое окно Запрос на выборку таблицу «Товары». Перенесите затем мышью в QBE-область последовательно поля: «Товар», «Количество», «Стоимость», «Описание», «Изображение», «Дата поступления». С помощью раскрывающегося списка в строке QBEбланка Сортировка для поля "Товар" установите режим сортировки По возрастанию, а для поля «Стоимость» – По убыванию (см. рис. 16).

В построенном варианте запроса записи будут отсортированы в алфавитном порядке по названию товаров, а в пределах каждого товара – в убывающем порядке его стоимости.

Для подавления вывода на экран отдельных полей запроса необходимо в строке QBE-бланка Вывод на экран с помощью мыши произвести сброс флажка (отметка внутри квадрата пропадет). Поскольку данные с типами Поле MEMO и Поле объекта OLE не отображаются в таблицах запросов, то нашем случае вывод этих полей всегда будет подавлен (просмотреть такие поля можно только построив на основе полученного запроса новый объект БД Форма, см. подробнее раздел 5 пособия).

При построении запросов следует также иметь в виду, что Access не проводит сортировку по полям с типами данных Поле MEMO и Поле объ-

екта OLE.

Для выполнения запроса щелкните мышью кнопку Запуск в пиктографическом меню. В результате на экране в виде таблицы отобразится результат запроса. Сохраните запрос под именем «Товары с сортировкой».

35

Рис. 17. Бланк запроса на выборку с условием и сортировкой

Рис. 18. Окно Построитель выражений

Составим теперь список контрактов, заключенных с клиентами после 1 марта 2001 года. Для подготовки такого запроса с условием для выборки записей, действуя аналогичным предыдущему случаю образом, выберите в главном окне БД объект Запросы и выполните затем последова-

тельно команды Создать/Конструктор. В окно Запрос на выборку до-