Вы находитесь на странице: 1из 7

Практическая работа №18

Система управления базами данных Microsoft Access 2007.


Анализ и изменение данных с помощью запросов

Создание запросов с параметрами


Пусть в созданной в предыдущей лабораторной работе БД «Учет выдачи и возврата книг» требуется
получить сведения о книгах по определенной тематике, для этого необходимо создать запрос и в
условие отбора ввести нужное значение:

В случае необходимости выдать сведения о книгах по другой тематике нужно изменить условие
отбора. Для того чтобы не менять условие отбора каждый раз, можно создать запрос, в котором
Наименование тематики будет параметром, запрашиваемым при выполнении, для этого в строку
Условие отбора для поля Наименование тематики ввести вместо конкретного значения
приглашение к вводу параметра [Введите тематику:]:

После запуска такого запроса появится диалоговое окно с введенным вами приглашением к вводу
параметра:

1
В результирующее множество запроса попадут все книги с тематикой Информатика, которые имеются
в БД. Запрос может содержать не один, а несколько параметров, и все они по очереди будут
запрашиваться при его выполнении.

Использование выражений в запросах с параметрами


При создании запроса часто используются выражения.
Выражение — это сочетание нескольких (или всех) из указанных элементов: встроенные или
пользовательские функции, идентификаторы, операторы и константы.

Например, следующее выражение содержит все четыре элемента:


=Sum([Закупочная цена])*0,08
В данном примере Sum() — встроенная функция, [Закупочная цена] — идентификатор, * —
математический оператор, а 0,08 — константа.
Логические операторы
Логические операторы применяются для объединения двух логических значений и возврата значения
«истина», «ложь» или null.
Оператор Назначение Пример

And Возвращает значение «истина», если Выражение1 And


Выражение1 и Выражение2 Выражение2
истинны.

Or Возвращает значение «истина», если Выражение1 Or


Выражение1 или Выражение2 Выражение2
истинны.

Eqv Возвращает значение «истина», если Выражение1 Eqv


Выражение1 и Выражение2 истинны Выражение2
или Выражение1 и Выражение2
ложны.

Not Возвращает значение «истина», если Not Выражение


выражение ложно.

Xor Возвращает значение «истина», если Выражение1 Xor


истинно Выражение1 или Выражение2
Выражение2 (но не оба выражения).

2
Специальные операторы
Принципы использования специальных операторов для возвращения значения «истина» или «ложь»
представлены в следующей таблице.
Оператор Назначение Пример

Is Null или Is Not Null Определяет, является ли Поле1 Is Not Null


значение Null или не Null.

Like «шаблон» Сопоставляет строковые Поле1 Like "инструк*"


значения с помощью
логических операторов ? и *.

Between значение1 And значение2 Определяет, попадает ли Поле1 Between 1 And 10


числовое значение или - ИЛИ -
значение даты в указанный Поле1 Between #07-01-07# And
диапазон. #12-31-07#

In(значение1,значение2...) Определяет, входит ли Поле1 In


значение в набор значений. ("красный","зеленый","синий")
- OR -
Поле1 In (1,5,7,9)

Выражения можно использовать и в запросах с параметрами, например, запрос по выборке книг,


выданных в определенный период, будет выглядеть следующим образом:

При вводе значений параметров типа Дата необходимо контролировать значения дат, для этого
вызовите окно Параметры запроса (контекстное меню на свободном поле верхней панели
запроса/ Параметры или Конструктор/ Показать или скрыть/ Параметры). В столбец Параметр
введите значение параметра точно так, как он определен в условии отбора. В столбце Тип данных
выберите из раскрывающегося списка тип Дата/время. Аналогично введите второй параметр:

3
Пример использования специального оператора In. Пусть требуется отобрать книги нескольких
авторов. Это можно сделать двумя способами:
1 способ

2 способ

4
Выражения можно формировать с помощью Построителя выражений. Это средство предоставляет
удобный доступ к именам полей и элементов управления, используемым в базе данных, а также к
множеству других встроенных функций, применяемых во время написания выражений.
Построитель выражений предоставляет возможность поиска и вставки компонентов выражения,
которые сложно запомнить, например идентификаторов (имен полей, таблиц, форм, запросов и т. д.), а
также имен и аргументов функций.
С помощью Построителя выражений можно написать выражение «с нуля» или выбрать одно из
готовых выражений для отображения номеров страниц, текущей даты, а также текущей даты и
времени.

 Поле выражения
Верхняя область Построителя содержит поле выражения, применяемое для формирования выражения.
Можно ввести выражение в поле вручную или выбрать нужные элементы из трех столбцов в нижней
области построителя, а затем вставить их в поле выражения. Чтобы добавить элемент, дважды
щелкните его и нажмите кнопку Вставить.
  Кнопки операторов
В средней части Построителя выражений отображаются кнопки для вставки в выражение наиболее
распространенных арифметических и логических операторов. Чтобы вставить оператор в поле
выражения, нажмите соответствующую кнопку. Чтобы отобразить более длинный список операторов,
которые можно использовать в выражениях, щелкните папку Операторы в левом нижнем столбце,
содержащую элементы выражения, а затем щелкните нужную категорию в среднем столбце. В правом
столбце отобразятся все операторы выбранной категории. Чтобы вставить оператор, дважды щелкните
его.
 Элементы выражения
В нижней области содержатся три столбца.
В левом столбце отображаются папки с таблицами, запросами, формами и отчетами в базе данных, а
также доступные встроенные функции и заданные пользователем функции, константы, операторы и
часто используемые выражения.
В среднем столбце отображаются определенные элементы или типы элементов из папки, выбранной в
левом столбце. Например, если выбрать в левом столбце Встроенные функции, то в среднем столбце
появится список типов функций.
Запуск Построителя выражений из запроса
Откройте запрос в режиме Конструктора.
Щелкните ячейку в бланке запроса, куда требуется вставить выражение. Например, щелкните ячейку
Условие отбора в столбце, для которого требуется задать условие отбора, или ячейку Поле в столбце,
где требуется создать вычисляемое поле.
На вкладке Конструктор в группе Настройка запроса щелкните Построитель.

5
Использование статистических функций в запросе
Другим типом расчетов, которые могут выполняться в запросе, является подсчет итоговых значений.
Например, для числового поля таблицы можно вычислить среднее значение или сумму значений для
всех или отобранных записей, можно подсчитать количество записей, возвращаемых запросом, и т. д.
В этих запросах используются статистические функции. Описание этих функций приведено в таблице.
Функция Описание

Avg() Вычисляет арифметическое среднее набора чисел, содержащихся в указанном поле запроса

Count() Вычисляет количество непустых записей, возвращаемых запросом

First() Возвращает значение поля из первой записи результирующего запроса

Last() Возвращает значение поля из последней записи результирующего набора

Max() Возвращает максимальное значение из набора, содержащегося в указанном поле

Min() Возвращает минимальное значение из набора, содержащегося в указанном поле

Sum() Возвращает сумму набора значений, содержащихся в заданном поле

Использование статистических функций для расчета итоговых значений тесно связано с применением
групповых операций в запросе. Групповые операции позволяют задать группы, для которых
выполняются вычисления. Ниже приведены примеры таких расчетов, как на всем множестве записей,
так и на подмножествах, отобранных условиями в запросе.
Необходимо подсчитать количество книг в библиотеке по каждой тематике, для этого:
1) с помощью Конструктора создайте запрос на основе таблиц Книги и Тематика;
2) поместите в бланк запроса поля Наименование тематики и Наименование книги;

3) щелкните на кнопке Групповые операции на панели инструментов. В бланк запроса


добавляется строка Групповая операция, содержащая по умолчанию в каждой ячейке значение
Группировка;
4) для поля Наименование тематики оставьте значение Группировка, для поля Наименование книги
выберите из списка функцию Count;
5) нажмите кнопку Запуск на панели инструментов для просмотра результатов запроса. Вы получите
таблицу, которая содержит список тематик книг, и для каждой тематики указывается количество
книг в библиотеке, относящихся к ней.
В предыдущем примере расчеты производились над всеми имеющимися в таблице Тематика
записями. Однако иногда требуется выполнить вычисления только над отобранным набором записей.
Для этого вместе с групповыми операциями необходимо использовать и параметры.

Способы объединения таблиц в запросах


Когда в запрос включатся несколько таблиц, для получения нужных результатов используются
объединения. Объединение помогает извлечь из каждой включенной в запрос таблицы только нужные
записи, на основании сведений о том, как эти таблицы связаны с другими таблицами в запросе.
Существует следующие основные типы объединений: внутренние объединения и внешние.
Внутренние объединения — наиболее часто встречающийся тип объединений. Они представляют
собой запросы, в которых строки одной из объединяемых таблиц соответствуют строкам другой
таблицы по значениям в связанных полях. При выполнении запроса с внутренним объединением в
операцию включаются только строки, имеющие одинаковые значения в обеих связанных таблицах.
Когда следует использовать внутреннее объединение?

6
Внутреннее объединение используется в том случае, когда запрос должен возвращать только те
строки обеих таблиц объединения, значения связанных полей которых совпадают.
Как следует использовать внутреннее объединение?
В большинстве случаев для использования внутреннего объединения не нужно предпринимать каких-
либо действий. Если ранее в окне схемы данных были созданы связи между таблицами, то при
добавлении связанных таблиц в режиме конструктора запроса линии объединения создаются
автоматически.
Внешние объединения представляют собой запросы, в которые включаются все строки одной
таблицы, а также строки другой таблицы, значения которых в первой и второй таблице совпадают,
несмотря на то, что некоторые из строк с обеих сторон полностью совпадают.
Внешние объединения являются направленными, они могут быть левыми или правыми. Можно легко
понять, какая таблица в данном объединении является левой или правой, дважды щелкнув линию
связи и посмотрев в диалоговое окно Параметры объединения.
Поскольку некоторые строки с одной стороны внешнего объединения не будут иметь в другой
таблице соответствующих им строк, некоторые поля, принадлежащие другой таблице и возвращаемые
в результатах запроса, будут иметь пустые значения.
Когда следует использовать внешнее объединение?
Используйте внешнее объединение, когда возникнет необходимость, чтобы в результаты объединения
были включены все строки одной из таблиц и только те строки другой таблицы, значения связанных
полей в которых соответствуют значениям связанных полей в первой таблице.
Как следует использовать внешнее объединение?
Внешние объединения создаются путем изменения внутренних объединений.
Пусть в таблице Тематика присутствует тематика, по которой нет книг в таблице Книги. Рассмотрим
различные варианты выбора книг по тематикам:
1) с помощью Конструктора создайте запрос на основе таблиц Книги и Тематика;
2) в режиме Конструктора запроса дважды щелкните объединение между таблицами, которое следует
изменить. На экране появится диалоговое окно Параметры объединения. В этом окне обратите
внимание на варианты: параметр 1 соответствует внутреннему объединению, параметр 2 – левое
внешнее объединение, параметр 3 – правое внешнее объединение. Установите объединение всех
записей из таблицы Тематика и только тех записей из таблицы Книги, в которых связанные поля
совпадают;
3) В Microsoft Access отобразится объединение и стрелка, соединяющая источник данных, все строки
которого включаются в объединение, с источником данных, из которого выбираются только
строки, удовлетворяющие условию объединения;
4) нажмите кнопку Запуск на панели инструментов для просмотра результатов запроса. Вы получите
таблицу, которая содержит список всех тематик книг, для каждой тематики указаны книги,
относящиеся к ней, при этом одна их тематик будет иметь пустое значение;
5) установите для этой связи внутреннее объединение, просмотрите результат и сравните его с
результатом внешнего объединения.

Индивидуальное задание
1. Создать запрос:
a. выводящий информацию о книгах, взятых в определенный день;
b. позволяющий отобрать всех читателей, записавшихся в библиотеку в октябре текущего
года;
c. подсчитывающий количество обращений читателей в библиотеку (предусмотреть
ситуацию, когда читатель записался в библиотеку, но не брал книг, в этом случае запрос
должен выдавать для такого читателя 0);
d. выводящий информацию о книгах из всех тематик, содержащих корень «инфо»
(например, «Информатика», «Информационные технологии в образовании»);
e. выводящий фамилии задолжников вместе с названиями книг, которые они не вернули.