Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_pechat_ekzamen_ITU а.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
262.95 Кб
Скачать

32. Запросы к базам данных

Ранее были рассмотрены способы ввода данных в таблицу базы. Однако основным режимом работы с базами данных является режим получения информации. Обычно требуется получить нужные данные в определенном формате. Это делается с помощью запросов.

При формировании и выполнении запроса опрашивается активная база данных. Результат (ответ) может просматриваться на экране или распечатываться. Основными типами запросов являются:

Запросы на выборку. Информация получается из таблиц на основе заданного критерия. Запросы на выборку наиболее распространены и используются в Access по умолчанию.

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

Критерии при построении запроса обычно задаются выражениями, содержащими определенные элементы и подчиняющиеся определенным синтаксическим правилам.

Выражения. Чтобы при выполнении конкретного условия произошло какое–то событие, данное условие задают с помощью выражения. Выражение представляет собой запись, состоящую из элементов (операнды) и операций с этими элементами (операторы). В качестве операндов, или элементов, над которыми выполняется операция, служат литералы, идентификаторы и функции. Оператор – это символ, определяющий операцию или действие. В качестве операторов используются знаки операций присваивания, знаки арифметических и логических отношений и т.п.

Литералы. Вводимая пользователем последовательность символов (литер), воспринимаемая как константа называется литерал. Литерал может представлять различные типы данных: число, текст, логические переменные. Литералы используются в том виде, который имеют на экране, скажем число 12345 или строка ABCDE. Литералы чаще всего применяют для создания стандартных значений, а в комбинации с идентификаторами полей – для сравнения значений в полях таблиц и столбцах запросов.

Идентификаторы. Имена объектов Access (базы данных, таблицы, запросы, формы и отчеты), которые возвращают определенные числовые или текстовые значения. Термин возвращает применительно к выражениям означает, что текущее значение идентификатора подставляется в выражение вместо его имени. В Access имеется пять определенных именованных констант, служащих идентификаторами: True, False, Yes, No и Null.

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

Операторы. В программе Access для создания выражений применяют шесть категорий операторов.

Арифметические операторы. Выполняют действия с числовыми значениями.

Оператор

Описание операции

+

Складывает два арифметических выражения

Вычитает из первого арифметического выражения второе

*

Перемножает два арифметических выражения

/

Делит первое арифметическое выражение на второе

\

Округляет два арифметических выражения до целых значений и делит первое на второе. Результат округляется до целого

Возводит первое арифметическое выражение в степень, задаваемую вторым арифметическим выражением

MOD

Округляет оба арифметических выражения до целых значений, делит первое на второе и возвращает остаток

Операторы присваивания и сравнения. Задают и сравнивают значения. В арифметических выражениях не приведен знак "равенства", поскольку он используется в двух случаях. Чаще всего знак "равенства" применяют как оператор присваивания; этот знак присваивает значение отдельного операнда объекту Access либо переменной. В другом случае он служит оператором сравнения, устанавливающим равенство двух операндов.

Оператор

Описание

Оператор

Описание

<

Меньше чем

And

Логическое И

<=

Меньше или равно

Or

Включающее ИЛИ

=

Равно

Not

Логическое НЕ

>=

Больше или равно

Xor

Исключающее ИЛИ

>

Больше чем

<>

Не равно

Логические операторы. Работают со значениями, которые могут быть только истинны или ложны. Логические операторы (или булевы операторы) чаще всего применяются для комбинирования результатов двух и больше операций сравнения и представления их в виде единого результата. Наиболее часто используются операторы And, Or и Not. Реже оператор Xor.

Операторы конкатенации. Комбинируют строки символов, применяются для слияния двух строковых выражений. Например, в результате конкатенации двух строк ABC и DEF появляется строка ABCDEF. Знак амперсанта (&) является привилегированным оператором конкатенации Access.

Операторы идентификации. Создают однозначные имена объектов базы данных. Это дает возможность, например, назначить полю одинаковое имя в нескольких таблицах и запросах.

Прочие операторы, такие как Like, In и Between, предназначены для упрощения создания выражений для выбора записей с помощью запросов.

Оператор

Описание

BETWEEN

Определяет диапазон значений. Например, Between 10 And 20 означает то же самое, что и выражение >=10 And <= 20

IN

Задает используемый для сравнения список значений. Выражение IN («ж»;«н»;«т») означает то же самое, что и выражение «ж» Or «н» Or «т»

LIKE

Оператор, полезный при поиске образцов в текстовых полях. Например, в выражении Like «?[a–к]д[0–9]*» проверяется наличие произвольного символа в первой позиции, буквы от а до к – во второй позиции, буквы д – в третьей позиции, любого символа от 0 до 9 – в четвертой позиции и произвольного числа символов в конце строки

В образец поиска вы можете включить символы шаблона:

  • «?» заменяет любой символ в данной позиции;

  • «*» обозначает любое количество (включая нулевое) символов в данной позиции;

  • «#» указывает, что в данной позиции должна стоять цифра;

  • « » допустимый диапазон символов для этой позиции заключается в квадратные скобки;

  • «!» используется для указания исключений.

Диапазон [0–9] указывает, что в этой позиции должна быть цифра, [а–я] – буква, а [!0–9] – любой символ, кроме цифр от 0 до 9.

Групповые операции на панели инструментов обозначаются символом . После нажатия кнопки Групповые операции () на панели инструментов, Access использует установку Группировка в строке групповая операция для любого поля, занесенного в бланк запроса. Теперь записи по каждому полю группируются, но итог не подводится. Если выполнить запрос сейчас, вы получите набор записей, включающий по одной строке для каждого уникального значения полей запроса – но без итогов. Для получения итогов замените установку Группировка в строке Групповая операция на конкретные итоговые функции.

Access предоставляет девять функций, обеспечивающих выполнение групповых операций. Вы можете задать нужную вам функцию, введя ее имя с клавиатуры в строке Групповая операция бланка запроса или выбрав ее в раскрывающемся списке. Ниже перечислены итоговые функции Access:

Оператор

Описание

Sum

Вычисляет сумму всех значений заданного поля в каждой группе. Используется только для числовых или денежных полей

Avg

Вычисляет среднее арифметическое всех значений данного поля в каждой группе. Используется только для числовых или денежных полей. Access не учитывает в вычислениях значения Null

Min

Возвращает наименьшее значение, найденное в этом поле внутри каждой группы. Для числовых полей возвращает наименьшее значение. Для текстовых – наименьшее из символьных значений независимо от регистра. Access игнорирует значения Null

Max

Возвращает наибольшее значение, найденное в этом поле внутри каждой группы. Для числовых полей возвращает наибольшее значение. Для текстовых – наибольшее из символьных значений независимо от регистра. Access игнорирует значения Null

Count

Возвращает число записей, в которых значения данного поля отличны от Null. Чтобы подсчитать число записей в каждой группе с учетом значений Null, введите в строку Поле специальное выражение COUNT(*)

StDev

Вычисляет стандартное отклонение всех значений данного поля в каждой группе. Эта функция применяется только к числовым или денежным полям. Если в группе меньше двух строк, Access возвращает значение Null

Var

Вычисляет дисперсию значений данного поля в каждой группе. Эта функция применяется только к числовым или денежным полям. Если в группе меньше двух строк, Access возвращает значение Null

First

Возвращает первое значение этого поля в группе

Last

Возвращает последнее значение этого поля в группе

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

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

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

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

Запросы – важнейший инструмент любой системы управления базами данных. Запросы служат для выбора записей, обновления таблиц и включения в них новых записей. Чаще всего запросы применяют для выбора конкретных групп записей, удовлетворяющих заданному условию. Кроме того, запросы позволяют комбинировать информацию, содержащуюся в различных таблицах, обеспечивая связанным элементам данных таблиц унифицированный вид. После выполнения запроса на выборку (который отбирает информацию из таблиц и других запросов базы данных) Access создает набор записей, содержащий отобранные данные. В большинстве случаев с набором записей можно работать точно так же, как с таблицей: вы можете просматривать и выбирать информацию, печатать и даже обновлять данные. Однако в отличие от реальной таблицы, этот набор записей физически не существует в базе данных. Access создает набор записей из данных таблиц только во время выполнения запроса. В этом разделе рассматривается, как создавать запросы, а также как задавать в запросе условия отбора данных и применять результаты запроса.

Создание простого запроса на выборку с использованием бланка запроса. Одно из наиболее мощных средств Access – конструктор запросов, называемый также графическим бланком запроса.

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

1. Откройте базу данных.

2. Откройте окно конструктора запроса. Существует два способа открытия окна бланка запроса:

1–ый способ: щелчком "мыши" выберите таблицу, раскройте список кнопки Новый объект на панели инструментов и выберите в нем Новый запрос. Выберите Конструктор в окне диалога Новый запрос и нажмите кнопку Ok.

2–ой способ: в окне базы данных щелкните на вкладке Запросы и нажмите на кнопку Создать. Выберите Конструктор в окне диалога Новый запрос и нажмите кнопку Ok. Поверх окна запроса в режиме конструктора появится окно Добавление таблицы. Вкладки диалогового окна Добавление таблицы позволяют выбрать все существующие таблицы или запросы либо их комбинации. Новый запрос можно создавать на основе одной или нескольких созданных таблиц или запросов. В нашем примере во вкладке Таблицы выделите щелчком "мыши" таблицу и щелкните на кнопке Добавить. Чтобы включить таблицу в запрос, можно также дважды щелкнуть на ней. Щелкните на кнопке Закрыть.

3. Перед вами бланк запроса. Слева в верхней области окна конструктора запроса отобразится список полей таблицы, а в нижней области окна – пустой бланк запроса. Список полей содержит имена всех полей таблицы, но вы должны будете воспользоваться полосой прокрутки, чтобы увидеть больше, чем пять записей в списке полей, размеры которого заданы по умолчанию. Элемент звездочка (*) наверху списка – сокращенный символ для добавления всех полей в таблицу. Каждый столбец бланк представляет одно поле, используемое в запросе.

Первая строка бланка запроса служит для выбора полей, которые должны присутствовать в наборе записей, используются для сортировки данных или для выбора информации из таблицы. Во второй строке бланка запроса Access выведет имя таблицы, из которой выбрано поле. В третьей строке бланка вы можете задать, нужно ли выполнять сортировку по выбранному или вычисляемому полю.

Флажки в строке бланка Вывод на экран отвечают за вывод полей в наборе записей. По умолчанию Access выводит на экран все поля, включенные в бланк запроса. Однако некоторые поля включаются в запрос только для отбора нужных записей, а выводить их в наборе записей вовсе не обязательно. Чтобы исключить такое поле, снимите его флажок в строке Вывод на экран. И, наконец, для ввода условия отбора записей используется строка Условие отбора и строки Или. После небольшой практики вы без труда будете задавать поля и отбирать нужные вам записи.

Включение полей в запрос. Это можно сделать несколькими способами. Для перевода курсора из верхней части окна в бланк запроса можно нажать клавишу F6 или щелкнуть мышкой в поле столбца. Появится кнопка с раскрывающимся списком полей. Выберите нужное название поля и щелкните по нему мышкой. Можно просто перетащить поле в нужный столбец бланка из списка полей в верхней части окна. При перетаскивании поля при нажатой кнопкой "мыши" ее указатель превращается в маленький прямоугольник. Учтите, что вы можете повторно включать отдельные поля таблицы в бланк запроса, чтобы определить условия отбора для них. В этом случае, чтобы поля дважды не выводились в наборе записей запроса, снимите флажки Вывод на экран в столбцах бланка, содержащих повторяющиеся поля.

Сохраните запрос. После сохранения запроса в файле базы данных сохраняется только описание конструкции запроса, но не значения, полученные после запроса

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

Применение перекрестных запросов имеет следующие преимущества:

  • отображение сводных данных в компактном виде, привычном для пользователей приложений электронных таблиц;

  • представление сводных данных в формате, идеально подходящем для создания графиков и диаграмм;

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

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

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

1. Откройте базу данных.

2. Создайте запрос в режиме конструктора на основе таблицы.

3. Включите в запрос поля

4. Нажмите кнопку Групповые операции () на панели инструментов конструктора запросов, чтобы в бланке запроса появилась строка Групповая операция.

5. Чтобы добавить в бланк запроса строку Перекрестная таблица выполните в опции Запрос команду Перекрестный. В этой строке для каждого поля перекрестного запроса может быть выбрана одна из четырех установок: Заголовки строк, Заголовки столбцов, Значение (вводимое в ячейках перекрестной таблицы) и Не отображается. Для перекрестного запроса надо определить, по крайней мере, одно поле в качестве заголовков строк, одно для заголовков столбцов и одно поле значений. Каждое поле, являющееся заголовком столбцов, должно иметь в строке Групповая операция установку Группировка. Для поля, использующегося в качестве заголовков строк, в процедуре Групповая операция должна быть установлена операция Группировка, или выбрана одна из итоговых функций (Count, Max, Min и т.д.) или введено выражение, содержащее итоговую функцию.

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

Access располагает средствами для решения такой проблемы, как определение последовательности расположения столбцов в перекрестной таблице. Щелкните в любом месте верхней части (вне списков полей) окна запроса в режиме конструктора и нажмите кнопку Свойства на панели инструментов. На экране появится окно свойств запроса.

Чтобы задать порядок вывода столбцов в перекрестной таблице, введите заголовки так, как они выглядят в отформатированном виде, и в той последовательности, в какой вы хотите их видеть. Убедитесь, что вы включили все заголовки столбцов, появляющихся в итоговой таблице. Если вы пропустите какой–нибудь заголовок столбца или неправильно введете его имя, то он не появится в перекрестной таблице.

Применение данных запроса. Иногда данные запроса необходимо использовать как часть другого приложения Windows. Проще всего передать данные запроса в другое приложение Windows через буфер обмена. Данные таблицы запроса можно поместить в буфер и вставить точно так же, как и данные любых таблиц. Но на выполнение этой операции Access может потратить много времени. В Access включена опция Связи с Office, с помощью которой вы можете проанализировать данные в MS Excel, опубликовать данные в MS Word и, наконец, осуществить слияние данных с MS Word.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]