double arrow

Запросы

2

Цель работы: изучение и закрепление на практике методов формирования и использования запросов для выборки и/или модификации данных в таблицах.

Методические указания

Вопросы, которые формируются средствами СУБД к одной или нескольким таблицам, называются запросами.

Запросы позволяют:

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

Указывать поля, которые должны быть отображены для выбранных записей;

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

Выполнять вычисления с использованием выбранных данных.

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

Добавить
Создать
В СУБД Access используется методология «Запрос по образцу» (Query by Example или QBE), включающая форму (бланк) запроса и специальный язык для её заполнения. Переход к формированию запроса реализуется путем перехода на вкладку "Запросы" конкретной БД и нажатия кнопки, после чего СУБД предлагает различные варианты реализации запросов. Наиболее эффективным является режим конструктора. Далее выбирается требуемая таблица и нажимается кнопкa. На экране появляется бланк запроса (рис. 3.1), представляющий набор пустых столбцов, каждый из которых содержит фиксированный набор ячеек. Операции работы с бланком запроса перечислены в команде ЗАПРОС главного меню и представлены пиктограммами в панели инструментов.

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

Рис. 3.1

Исходно бланк запроса пуст. Для занесения конкретного поля в бланк необходимо:

- двойным щелчком левой клавиши мыши поместить его в первый свободный столбец бланка,

или

- перетащить его мышью (при нажатой левой клавише мыши).

Полная очистка бланка при его переформировании может быть выполнена командой главного меню Правка ® Очистить. Очистка конкретного столбца проводится путем его выделения щелчком левой клавиши мыши в зоне выделения и нажатия клавиши Delete на клавиатуре или нажатия кнопки (Удалить в буфер)на панели инструментов.

Запуск запроса на выполнение осуществляется командами главного меню Запрос ® Запуск или нажатием кнопки на панели инструментов.

Сохранение запроса для дальнейшего использования производится командами главного меню Файл ® Сохранить как/Экспорт или нажатием кнопки на панели инструментов (Сохранить). Далее СУБД запросит имя сохраняемого запроса. Целесообразно, чтобы оно имело смысловую нагрузку, что облегчит дальнейшее использование запроса.

Самое главное в запросе - возможность использования критериев выборки, которые вводятся в строку Условие отбора. Можно выделить следующие типы запросов на основе критериев выборки:

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

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

[<текст приглашения>].

Например, [пол]=[<укажите пол – м или ж>]

При запуске параметризованного запроса появляется диалоговое окно (рис. 3.2), в котором пользователь должен ввести собственно условие отбора и нажать клавишу ОК.

Рис. 3.2

Выборка по строгому несовпадению. В этом случае в выборку отбираются все записи таблицы, кроме записей, содержащих значение, указанное в строке Условие отбора. Для реализации данного запроса перед значением вводится префикс Not или <>. Например, Not "Калининград" в поле Место проживания запроса к таблице ВЫПУСКНИК приведет к выборке всех выпускников, кроме проживающих в Калининграде.

Выборка по неточному совпадению. Для выборки записей в условиях неполноты знаний о требуемых значениях используется оператор Like <условие>. Само <условие> образуется следующими подстановочными символами:

·? - любой один символ;

· * - любое количество символов (0 - ¥);

· # - любая одна цифра;

· [список_символов] - любой символ из списка;

· [!список_символов] - любой символ, не входящий в список;

В списке можно указывать сразу диапазон символов, Например, [Г-Л] или [г-лГ-Л].

Примеры использования оператора Like в поле ФИО таблицы ВЫПУСКНИК:

Like?????????? - выбираются все ученики, ФИО которых содержит 10 символов;

Like "В?????????" - выбираются все ученики, ФИО которых содержит 10 символов и начинается на букву "В";

Like "В*" - выбираются все ученики, ФИО которых начинается на букву "В". Длина ФИО произвольная;

Like "[ВД]*" - выбираются все ученики, ФИО которых начинается на буквы "В" или "Д". Длина ФИО произвольная;

Like "[В-М]*" - выбираются все ученики, ФИО которых начинается на буквы от "В" до "М". Длина ФИО произвольная.

Выборка по диапазону. Для формирования данных условий выбора используются операторы сравнения >, >=, <, <= и <>. Операции сравнения могут связываться логическими операциями And (И) и Or (ИЛИ). Для этих же целей используется оператор диапазона Between <нижнее_значение> and < верхнее_значение >. Например, выбор книг стоимостью от 100 до 200 рублей может быть реализован через ввод в запросе условия в поле Стоимость в виде >=100 and <=200 или Between 100 and 200.

Перечень значений в условии выборки можно задать и оператором In (значение, значение,...). Например, выбор выпускников, родившихся в Белоруссии или Прибалтике можно реализовать, указав в поле Место рождения запроса условие In ("Белоруссия", "Прибалтика"). Это же условие можно записать и через операцию ИЛИ: " Белоруссия" or " Прибалтика". Также можно указать одно название в строке Условие отбора (см. рис. 3.1), а второе в следующей строке или. Число строк или не ограничено.

Для выбора записей с пустыми значениями в некотором поле надо в соответствующем поле бланка запроса указать оператор Is Null. Наоборот, записи с непустыми значениями в данном поле выбираются по оператору Is not Null.

В выражениях отбора также можно использовать знаки математических операций +, -, /, * и неограниченное число круглых скобок. Сложные выражения в условиях отбора могут формироваться с помощью соответствующего построителя, который вызывается кнопкой на панели инструментов.

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

<Название_формируемого_поля>:<выражение>.

В <выражении> можно использовать знаки арифметических операций, круглые скобки и имена полей в [ ]. Например, стоимость партии можно вычислить по выражению

Стоимость партии:[количество товара]*[стоимость единицы товара].

Если используется поле другой таблицы, то в префиксе через! указывается имя данной таблицы. Например

Стоимость партии:[Товар]![количество товара]*[стоимость единицы товара].

6. Запрос с групповыми операциями. Рассмотренные запросы анализируют отдельные записи таблицы. Вместе с тем, СУБД Access позволяет находить интегральные показатели для групп записей в таблице. Каждая такая группа характеризуется одинаковым значением по какому-то полю, например, одинаковым названием факультета или семейным положением. Для перехода в данный режим запросов необходимо в панели инструментов нажать клавишу Групповые операции , что приведет к появлению в бланке запроса новой второй строки с одноименным названием. В ячейках данной строки указывается или режим группировки по некоторому полю (опция Группировка), или название групповой операции:

· Sum - сумма значений

· Avg - среднее значение по данному полю для всей группы;

· Count - число записей в данной группе;

· Max -максимальное значение поля в каждой группе;

· Min -минимальное значение поля в каждой группе;

· First -первое значение данного поля в каждой группе;

· Last -последнее значение данного поля в каждой группе и др.

Опции выбора вызываются нажатием кнопки раскрытия в требуемой ячейке.

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

Рассмотренные запросы не изменяют содержимое исходной таблицы. Для реализации подобных действий СУБД Access использует четыре следующих запроса:

7. Запрос-создание новой таблицы. Предназначен для сохранения результатов запроса в виде новой таблицы.

Исходно формируется обычный запрос на выборку необходимой информации из таблицы. После проверки результатов его выполнения производится возврат в режим конструктора запросов. Далее нажимается кнопка Тип запроса на панели инструментов или выбирается команда главного меню Запрос. В появившемся списке выбирается опция Создание таблицы, после чего СУБД запрашивает её имя. Указывается имя создаваемой таблицы и нажимается кнопка ОК. Непосредственно запрос на создание запускается нажатием кнопки на панели инструментов.

В окне Таблицы БД появляется пиктограмма созданной таблицы.

8. Запрос-добавление выборки в другую таблицу. Выборку можно добавить к другой таблице, однотипной по структуре или с изменением структуры выборки.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

Нажимается кнопка Тип запроса на панели инструментов или выбирается команда главного меню Запрос. В появившемся списке выбирается опция Добавление, после чего СУБД запрашивает имя таблицы, к которой будет добавлена выборка. Последний шаг - нажатие кнопки ОК.

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

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

9. Запрос-удаление. С помощью запросов можно удалить часть или все записи из таблицы.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

Нажимается кнопка Тип запроса на панели инструментов или выбирается команда главного меню Запрос. В появившемся списке выбирается опция Удаление, после чего в бланке запроса появляется новая третья строка с именем Удаление, куда можно вводить дополнительные условия на выборку удаляемых записей. Последний шаг - нажатие кнопки ОК.

10.Запрос-обновление. С помощью запросов можно обновлять в единой операции некоторые или все значения выбранных полей.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  


2

Сейчас читают про: