КПпоПБД №3-4. Лабораторная работа 3 Создание базы данных
Скачать 0.84 Mb.
|
3. Выборка данных в СУБД AccessФильтрация данных В СУБД Access предусмотрено несколько механизмов выборки необходимой информации из таблиц БД. Простейшим из них является фильтрация, направленная на отбор группы записей, удовлетворяющих некоторому условию. В СУБД Access существует несколько разновидностей фильтров: Фильтр по выделенному. В режиме просмотра таблицы в некотором поле выделяется значение, которое является условием отбора, например, название факультета в таблице описания студентов вуза. Далее нажимается пиктограмма Фильтр по выделенному на панели инструментов. Все записи таблицы, содержащие выделенное значение, отобразятся на экране. Остальные будут скрыты. Удаление фильтра осуществляется отжатием утопленной кнопки. В данном режиме можно произвести фильтрацию только по части значения. Для этого надо её выделить (например, первые буквы некоторого слова) и нажать кнопку Фильтр по выделенному. Фильтр по исключенному выделенному. Выделяется значение, используемое в качестве критерия фильтрации, и нажатием правой кнопки мыши вызывается контекстное меню, в котором выбирается опция Исключить выделенное. Фильтр по сложному критерию. При фильтрации условия отбора записей могут включать логические операции И и ИЛИ. Для реализации операции ИЛИ необходимо произвести фильтрацию по первому значению, затем нажать кнопку Изменить фильтр на панели инструментов, что приведет к открытию окна диалога по настройке фильтра. Внизу окна находятся ярлыки вкладок. На первой из них уже указано в качестве отбора первое значение. Необходимо перейти на вкладку ИЛИ и, нажав кнопку раскрытия, выбрать следующее значение. Далее нажимается кнопка Применить фильтр .Очевидно, что можно выбрать несколько значений, связанных операцией ИЛИ. Операция И реализуется между значениями различных полей, например, надо выбрать из таблицы СТУДЕНТ женатых студентов определенного факультета. Для этого производят фильтрацию по первому значению, например, факультету, а затем результат фильтруется по второму значению, например, семейному положению. Запросы на выборкуВопросы, которые формируются средствами СУБД к одной или нескольким таблицам, называются запросами. Существуют запросы на выборку и запросы, порождающие какое-либо действие: создание новой таблицы, удаление записей в таблице, обновление данных и т.д. В данной лабораторной работе мы познакомимся с созданием запросов на выборку. Они выполняют отбор требуемых пользователю данных, не изменяя содержимого исходных таблиц, а результаты отбора размещают в оперативной памяти. Отобранные данные можно просмотреть на экране, вывести на печать. Чаще всего отобранные запросом данные являются основой для построения отчётов. Подготовка запросов с помощью мастера С помощью запроса можно указать: какие поля вы хотите просмотреть; в каком порядке должны быть расположены поля; критерии фильтрации для каждого поля; порядок сортировки каждого поля. Самый простой способ создания запроса - использование мастера запросов. С его помощью можно создать простой запрос. Мастер запросов позволяет вам выделить поля, которые вы хотите отобразить, но вы не можете задать критерии для включения отдельных записей. Такой запрос удобно использовать, когда вы хотите убрать из рассмотрения отдельные поля, но видеть при этом все записи. В запросе могут быть представлены данные из нескольких таблиц. Простой запрос можно изменить, используя конструктор запросов. Конструктор запросов Для корректировки запроса, созданного мастером, необходимо выполнить следующие действия: Выбрать объект Запросы. Выделить запрос, который требует корректировки, затем щёлкнуть на кнопке Конструктор. Появится окно режима конструктора запроса (рис. 3.1.) Конструктор запросов можно также использовать для создания новых запросов. Для этого необходимо : Перейти к объекту Запросы в окне базы данных и вызвать команду СОЗДАНИЕ ЗАПРОСА В РЕЖИМЕ КОНСТРУКТОРА. Появится диалоговое окно "Добавление таблицы", в котором перечислены все таблицы базы данных. Выделите таблицу, с которой вы хотите работать, а затем щёлкните на кнопке Добавить. Для того, чтобы выбрать несколько таблиц, щёлкните эти таблицы при нажатой клавише <Shift>. Когда вы закончите добавление таблиц, щёлкните Закрыть. При этом откроется окно режима конструктора запроса. Рис. 3.1 Окно конструктора запросов Теперь необходимо добавить те поля, с которыми вам предстоит работать. Щёлкните строку Имя таблицы в первом пустом столбце. Появится стрелка, показывающая наличие спускающегося списка. В спускающемся списке выберите таблицу Щёлкните строку Поле прямо над именем таблицы, которую вы выбрали. Появится стрелка спускающегося списка. В этом списке выделите поле. Его имя появится в строке поле и будет расположено в том столбце, где вы его выделили. Добавление условий отбора Самое главное в запросе - возможность использования критериев выборки, которые вводятся в строку Условие отбора. С помощью условий отбора вы можете выбрать записи, которые будут появляться в результатах запроса. Для этого щёлкните строку Условие отбора в столбце нужного поля и введите условие отбора. Для формирования условий отбора используются операторы сравнения >, >=, <, <= и <>. Операции сравнения могут связываться логическими операциями And (И) и Or (ИЛИ). Для этих же целей используется оператор диапазона Between <нижнее_значение> and <верхнее_значение>. Например, выбор книг стоимостью от 100 до 200 рублей может быть реализован через ввод в запросе условия в поле Стоимость в виде >=100 and <=200 или Between 100 and 200. Перечень значений в условии выборки можно задать и оператором In (значение, значение, ...). Например, выбор студентов факультетов МТФ или ФАПУ можно реализовать, указав в поле Факультет запроса условие In ("МТФ", "ФАПУ"). Это же условие можно записать и через операцию ИЛИ: "МТФ" or "ФАПУ". Также можно указать одно название факультета в строке Условие отбора (см. рис. 9.1), а второе - в следующей строке или. Число строк или не ограничено. Для выбора записей с пустыми значениями в некотором поле надо в соответствующем поле бланка запроса указать оператор Is Null. Наоборот, записи с непустыми значениями в данном поле выбираются по оператору Is not Null. В выражениях отбора также можно использовать знаки математических операций +, -, /, * и неограниченное число круглых скобок. Сложные выражения в условиях отбора могут формироваться с помощью соответствующего построителя, который вызывается кнопкой на панели инструментов. Другой способ добавить поля: Просмотрите список полей в окне нужной вам таблицы, которое находится в верхней части окна конструктора запроса, и найдите в нём поле, которое вы хотите добавить. Щёлкните имя поля и перетащите его в строку Поле первого пустого столбца.
Чтобы добавить условия в запрос, необходимо открыть его в Конструкторе. После этого следует определить поля, для которых вы хотите задать условия. Если поля еще нет на бланке запроса, добавьте его, перетащив его из окна конструктора запросов на сетку полей или дважды щелкнув поле (при этом поле автоматически добавляется в следующий пустой столбец в сетке). Наконец, введите условия в строку Условия. Условия, заданные для разных полей в строке Условия, объединяются с помощью оператора AND. Другими словами, условия, заданные в полях "Город" и "ДатаРождения", интерпретируются следующим образом: Город = "Воронеж" AND ДатаРождения < DateAdd (" гггг ", -40, Date()) 1. Поля "Город" и "ДатаРождения" включают условия. 2. Этому условию соответствуют только записи, в которых поле "Город" имеет значение "Воронеж". 3. Этому условию соответствуют только записи людей, которым не менее 40 лет. 4. В результат будут включены только те записи, которые соответствуют обоим условиям. Что делать, если требуется, чтобы выполнялось только одно из этих условий? Другими словами, как можно ввести альтернативные условия? Если у вас есть альтернативные условия, то есть два набора независимых условий, из которых должен выполняться только один, используйте строки Условие отбора и Или на бланке. 1. 1. Условие "Город" указывается в строке "Условие отбора". 2. 2. Условие "ДатаРождения" указывается в строке "или". Условия, заданные в строках Условие отбора и или, объединяются с помощью оператора OR, как показано ниже. Город = "Чикаго" OR ДатаРождения < DateAdd("гггг", -40, Date()) Если требуется задать несколько альтернативных условий, используйте строки под строкой или. Запросы с параметрами В таких запросах ввод условий отбора производится пользователем при каждом запуске запроса. Для организации запроса с параметрами необходимо в строке Условие отбора вместо самого условия в квадратных скобках ввести текст приглашения на его ввод: [<текст приглашения>]. При запуске запроса с параметрами появляется диалоговое окно (рис. 3.2), в котором пользователь должен ввести условие отбора и нажать кнопку ОК. Рис. 3.2 Вычисления в запросах В запросе можно предусмотреть вычисления, что позволяет получить дополнительную информацию в процессе выборки, например, стоимость всей партии товара при хранимой в таблице информации о количестве товара и стоимости единицы. Для этого в строку Поле пустого столбца заносят выражение для вычисления по следующему формату: <Название формируемого поля>:<выражение> В <выражении> можно использовать знаки арифметических операций, круглые скобки и имена полей в []. Например, стоимость партии можно вычислить по выражению: Стоимость партии:[количество товара]*[стоимость единицы товара]. Если при вычислениях необходимо использовать данные из другой таблицы, то её имя указывается в префиксе, который отделяется от имени поля знаком !, например: Стоимостьпартии:[количество_товара]*[Товар]![стоимость_единицы_ товара]. В этой формуле [Товар] – имя таблицы. В случае сложного выражения можно вызвать построитель выражений щелчком на кнопке . Для просмотра результатов запроса необходимо вызвать команду ЗАПРОС, ЗАПУСК или щёлкнуть на кнопке ЗАПУСК на панели инструментов. Результаты появятся в окне, похожем на таблицу. Запросы с групповыми операциями В СУБД Access существует возможность задать запросы с групповыми операциями, что позволяет находить интегральные показатели для групп записей в таблице. Каждая такая группа характеризуется одинаковым значением по какому-то полю, например, одинаковым названием отдела или семейным положением. Для перехода в данный режим запросов необходимо в панели инструментов нажать кнопку ГРУППОВЫЕ ОПЕРАЦИИ , что приведет к появлению в бланке запроса новой второй строки с одноименным названием. В ячейках данной строки указывается или режим группировки по некоторому полю (опция Группировка), или название групповой операции: Sum - сумма значений; Avg - среднее значение по данному полю для всей группы; Count - число записей в данной группе; Max - максимальное значение поля в каждой группе; Min - минимальное значение поля в каждой группе; First - первое значение данного поля в каждой группе; Last - последнее значение данного поля в каждой группе и др. При выполнении запроса СУБД разбивает таблицу на группы, число которых равно числу существующих значений в группируемом поле, и реализует для каждой группы требуемую операцию, т.е. число строк в выборке равно числу групп. Задание № 3.1В таблице СЛУЖАЩИЙ своей базы данных осуществить следующие виды фильтрации: выбор служащих одного отдела; выбор служащих, название должности которых заканчивается на букву "т"; выбор служащих, фамилия которых начинается на букву "В"; выбор всех служащих, кроме одного отдела; выбор служащих по двум должностям; выбор служащих-женщин одного отдела. Задание № 3.2Для таблицы СЛУЖАЩИЙ своей базы данных сформировать, проверить корректность и сохранить следующие запросы: Отображающий в выборке поля: - ФИО; - дата_рождения; - отдел; - оклад. Отображающий в выборке все поля таблицы для работников одного отдела. Сделать данный запрос параметризованным; Отображающий в выборке поля: - ФИО; - отдел; - количество детей, для семейных сотрудников, фамилии которых начинаются на буквы от "Г" до "Ш"; Отображающий в выборке поля: - ФИО; - должность; - оклад, для холостых сотрудников с окладом больше 1000 руб. Рассчитывающий для каждого сотрудника налог в виде выражения (13% от оклада). В выборке выводятся: ФИО; отдел; оклад; налог. Предусмотреть группировку данных по отделам и суммирование полей оклад и налог для каждого отдела (при этом результат не должен содержать фамилии служащих). |