ЛАБОРАТОРНАЯ РАБОТА № 2 - В помощь студентам ПМР

advertisement
ЛАБОРАТОРНАЯ РАБОТА № 2
Тема: «Создание запросов»
Теоретические сведения.
При работе с таблицами можно в любой момент выбрать из базы данных необходимую
информацию с помощью запросов.
Запрос - это обращение к БД для поиска или изменения в базе данных информации,
соответствующей заданным критериям.
С помощью Access могут быть созданы следующие типы запросов: запросы на выборку,
запросы на изменение, перекрестные запросы, запросы с параметром.
Одним из наиболее распространенных запросов является запрос на выборку, который
выполняет отбор данных из одной или нескольких таблиц по заданным пользователем
критериям, не приводящий к изменениям в самой базе данных.
Создание запроса
Для начала создания запроса следует открыть базу данных, и, перейдя на вкладку
Запросы
выбрать Создание запроса в режиме конструктора. Появится окно
Добавление таблицы.
Рисунок 1.Диалоговое окно Добавление таблицы
Через диалоговое окно Добавление таблицы добавляются имена таблиц в окно
конструктора запроса. Это окно состоит из трех вкладок, содержащих перечни объектов,
предлагаемых программой для проектирования запроса: Таблицы, Запросы и Таблицы
и запросы. При выборе вкладки Таблицы следует выделить нужную нам таблицу из
предложенного списка и с помощью кнопки Добавить можно добавить несколько таблиц.
Например, на рис.1 выбрана таблица Студенты.
Имена таблиц должны быть представлены в окне конструктора запроса (рис 2).
Окно конструктора запроса
Окно конструктора (рис.2) разделено на две части. В верхней части находятся окна
таблиц со списками полей. Имя каждой таблицы отображается в строке заголовка такого
окна.
Рисунок 2. Окно конструктора запроса. Пример ввода условия.
Нижняя часть является бланком запроса, или, как его называют, QBE – областью (Query
by Example – запрос по образцу). Здесь указываются параметры запроса и данные,
которые нужно отобрать, а также определяется способ их отображения на экране.
Для перемещения из верхней панели окна в нижнюю панель и обратно используется
клавиша F6.
Включение полей в запрос
В запрос не следует включать все поля выбранных таблиц.
Добавить нужные поля в бланк запроса можно путем перетаскивания их имен из списка,
находящегося в верхней части окна конструктора в строку бланка Поле.
Еще один способ – двойной щелчок по имени поля.
Например, на рис.2 в бланк запроса включены поля Фамилия, Имя и Отчество,
Дата_рождения из таблицы Студенты.
В строке Вывод на экран
выведены на экран.
флажком помечаются
те поля, которые должны быть
В общем случае поля, вводимые в наборе записей запроса, наследуют свойства, заданные
для соответствующих полей таблицы.
Можно определить другие значения свойств, выполнив команду Свойства из меню Вид:
Описание (текст, содержащий описание объекта), Формат поля (представление данных
на экране), Число десятичных знаков (для числовых данных, Маска ввода, Подпись
(заголовок столбца).
Удалить поле из бланка запроса можно клавишей [Delete] или через меню Правка
командой Удалить столбцы. Чтобы удалить таблицу, следует маркировать ее в верхней
части окна конструктора запроса, выполнив щелчок по имени, и нажать [Delete] или в
меню Правка командой Удалить.
Установка критериев отбора записей
При создании запроса можно задать критерии, вследствие чего по запросу
осуществлен отбор только нужных записей.
будет
Чтобы найти записи с конкретным значением, в каком либо поле, нужно ввести это
значение в данное поле в строке бланка QBE Условие отбора (см. рис.2).
Критерии, устанавливаемые в QBE – области, должны быть заключены в кавычки. Если
ACCESS идентифицирует введенные символы как критерии отбора, то заключает их в
кавычки автоматически, а если нет, то сообщает о синтаксической ошибке.
Например, как показано на рис.3, построен запрос, по которому из данных по баллам
будут выбран студент с фамилией введенной пользователем в диалоговое окно при
запуске запроса.
Виды критериев
Для создания запроса с несколькими критериями пользуются различными операторами.
Можно задать несколько условий отбора, соединенных логическим оператором или (or),
для некоторого поля одним из двух способов:
1) можно ввести все условия в одну ячейку строки Условие отбора, соединив
их логическим оператором Оr. В этом случае будут выбраны данные, удовлетворяющие
хотя бы одному из условий.
Например, запись 4 Оr 5 соответствует тому, что будут выбраны фамилии с оценками 4
или 5.
Рисунок 3. Пример записи условия с использованием оператора или (or).
2) ввести второе условие в отдельную ячейку строки или. И если используется
несколько строк или, то чтобы запись была выбрана, достаточно выполнения условий
хотя бы в одной из строк или, как, например, показано на рис. 4.
Рисунок 4. Пример записи условия с использованием оператора или (or).
При такой записи условия также будут выбраны фамилии с оценками 4 или 5.
Логическая операция и (And) используется в том случае, когда должны быть выполнены
оба условия и только в этом случае запись будет выбрана.
Например, записав условие >2 And < 5 будут выбраны только оценки 3 и 4.
Рисунок 5. Пример записи условия с использованием оператора And(и).
Чтобы объединить несколько условий отбора оператором и (and), следует привести их в
одной строке.
Например, на рисунке 6 показано, как
можно задать условие для выбора фамилий
студентов, проживающих в городе Тирасполе, которые учатся только на 5.
Рисунок 6. Пример записи условия с использованием оператора и (Аnd ).
Исключить группу данных из состава анализируемых запросом записей позволяет
следующий критерий Not ИВТ
Рисунок 7. Пример записи условия с использованием оператора Not.
В этом случае будут выведены фамилии и мена всех студентов кроме студентов
специальности ИВТ. Аналогичный результат будет получен, если записать условие в виде
<> ИВТ.
Операторы и и или применяются как отдельно, так и в комбинации. Следует помнить, что
условия связанные оператором и выполняются раньше условий, объединенных
оператором или.
Оператор Between
Оператор Between позволяет задать диапазон значений, например:
between 10 and 20 будет выбраны значения поля от 10 до 20 включительно.
Оператор In позволяет задавать используемый для сравнения
список значений.
Например:
in (“первый”,”второй”,”третий”)
Оператор Like
Оператор Like полезен для поиска образцов в текстовых полях, причем можно
использовать шаблоны:
* — обозначает любое количество ( включая нулевой) символов;
? — любой одиночный символ;
# — указывает что в данной позиции должна быть цифра.
Например: для выбора фамилии, начинающейся с буквы П и с окончанием “ов” можно
записать
like П * ов
Операторы для даты и времени
Можно ввести дату и время,
при этом значения должны быть заключены между
символами #. Например:
#10 мая 2004#
>#31.12.03#
Реализуем запрос, выбирающий студентов, сдавших экзамен с апреля по май 2009 года.
Условие запроса будет выглядеть следующим образом:
Рисунок 8. Пример записи условия с использованием оператора # для данных, имеющих
тиа Дата/Время.
Пример условия, изображенного на рисунке 9, позволит выбирать данные по значениям
даты начальной и конечной, введенных пользователем.
Рисунок 9. Пример записи условия
З ап р осы с вычи сл яемыми п олями . И т оговые зап р осы.
Создадим запрос, который вычисляет номер курса, на котором учится студент.

Создайте новый запрос в режиме конструктора.

Добавьте в бланк запроса из таблицы Студенты поля Фамилия, Имя, Группа.
Для реализации данной задачи, нам необходимо использовать выражение разности
текущего года и года поступления, который указывается в первых двух цифрах в названии
группы.
 Для создания выражения в вычисляемом поле щелкните по пустому полю в бланке
QBE, а затем по кнопке панели инструментов
окно Построитель выражений (рис. 10).
Построить, при этом откроется
Рисунок 10 Окно построителя выражений с примером выбора функции Year
Выбрав нужную функцию из списка, нажимаем на кнопку Вставить.
Чтобы выбрать поле таблицы, необходимо открыть папку таблицы в окне построителя,
выделить нужное поле и нажать Вставить (см. рис. 11).
Рисунок 11 Окно построителя выражений с примером выбора поля Группа
В результате у вас должно получиться следующее выражение:
Выражение1: Year(Now())-(2000+CInt(Left([Студенты]![Группа];2)))
Year(Now())– возвращает значение года из системной даты
Year(дата) – функция (аргументом является значение даты или поле, содержащее
значение даты), которая возвращает значение года из даты, например Year(12.03.2009)
вернет значение 2009.
Left([Студенты]![Группа];2) – вырезает слева 2 символа из значения поля Группа.
CInt(Left([Студенты]![Группа];2)) – переводит в числовой тип данных вырезанные 2
символа функцией Left().
2000+CInt(Left([Студенты]![Группа];2)) –формирует значение года поступления.
Все имена объектов, из которых строится выражение для вычисления, заключены в
квадратные скобки, причем перед именем поля может стоять восклицательный знак (
! ) разделяющий его и имя таблицы.

Запустите запрос на выполнение. В последнем столбце вы должны получить
значение курса.

Измените заголовок столбца. Вместо Выражение1 введите Курс. Для этого
перейдите в режим Конструктора, в заголовке последнего столбца, куда вводилось
выражение, удалите до двоеточия Выражение1 и введите перед двоеточием Курс
Закройте запрос, сохраните его с именем Вычисление номера курса.
Итоговые запросы
Итоговые запросы значительно отличаются от обычных запросов. В них поля делятся на
2 типа:
- поля, по которым осуществляется группировка данных;
- поля, для которых проводятся вычисления.
Создадим итоговый запрос, в котором подсчитывается количество студентов на каждой
специальности.

В режиме Создать запрос в режиме конструктора добавьте таблицу Студенты.

В бланк запроса поместите поля Специальность и Фамилия.

Нажмите на кнопку Групповые операции
на панели инструментов.
В результате чего в бланке запроса появится строка Групповая операция. Если для
соответствующего поля из списка выбрать функцию Группировка (рис 12), то при
выполнении запроса записи по этому полю группируются по значениям в этом поле, но
итог не подводится.
Группировка в итоговом запросе производится только по одному полю. Во всех
остальных полях вводятся итоговые функции.
Рисунок 12. Строка Групповая операция в бланке QBE
Access предоставляет ряд функций, обеспечивающих выполнение групповых операций.
Можно задать нужную функцию, набрав на клавиатуре ее имя в строке, Групповая
операция или выбрав ее из раскрывающегося списка.
Основные групповые функции, которыми можно воспользоваться:
SUМ - вычисляет сумму всех значений заданного поля (для числовых или денежных
полей), отобранных запросом;
AVG - вычисляет среднее значение в тех записях определенного поля, которые отобраны
запросом ( для числовых или денежных полей);
MIN - выбирает минимальное значение в записях определенного поля, отобранных
запросом;
MAX – выбирает максимальное значение в записях определенного поля, отобранных
запросом;
COUNT – вычисляет количество записей, отобранных запросом в определенном поле, в
которых значения данного поля отличны от нуля;
FIRST - определяет первое значение в указанном поле записей;
LAST -. определяет последнее значение в указанном поле записей.
Для поля Фамилия выберите из раскрывающегося списка в строке Групповые операции
функцию COUNT.



Запустите запрос на выполнение
Изменим подпись поля COUNT_Фамилия на Количество студентов. Для этого
перейдите в режим Конструктора, щелкните правой клавишей мыши по полю
Фамилия, выберите Свойства, в строке Подпись введите Количество студентов.
Запустите запрос и убедитесь, что столбец переименован.
Сохраните запрос с именем Количество студентов по специальностям.
Запросы к нескольким таблицам
Запросы можно создавать для отбора данных как из одной, так и из нескольких таблиц.
Запросы к нескольким таблицам производятся аналогично запросам к однотабличным БД
с той лишь разницей, что в окно конструктора запроса добавляются все таблицы, данные
которых нужны в запросе.
Создадим запрос, который будет подсчитывать средний балл каждого студента.

В режиме Конструктора добавьте таблицы Студенты и Экзамены.

В бланк запроса поместите поля: Фамилия, Имя, Специальность, Группа, Оценка.

Нажмите на кнопку Групповые операции.

В строке Групповая операция выберите из списка функцию AVG.

Запустите запрос. На калькуляторе проверьте правильность вычисления среднего
значения.

Переименуйте поле AVG_ баллы в Рейтинг.

Закройте запрос, сохранив его под названием Рейтинг студентов.
САМОСТОЯТЕЛЬНО ВЫПОЛНИТЬ:
1 вариант
С помощью Конструктора создать запросы, удовлетворяющие условиям:
1. вывести на экран информацию о студентах специальности ИВТ и ТМС;
2. фамилии студентов, начинающиеся с определенной буквы (использовать
шаблоны);
3. вывести на экран фамилии студентов, обучающихся на втором курсе
специальности ИВТ (использовать в качестве источника данных только таблицу
Студенты);
4. вывести на экран фамилии и имена студентов, проживающие в городе Тирасполь
или обучающиеся на специальности Электроэнергетика (ЭЭ);
5. количество студентов, сдавших меньше 2 экзаменов;
6. запрос, вычисляющий возраст студентов.
2 вариант
С помощью Конструктора создать запросы, удовлетворяющие условиям:
1. вывести на экран информацию о студентах, проживающих в городе Бендеры;
2. фамилии студентов, заканчивающиеся на “ов”;
3. вывести на экран информацию о студентах, обучающихся не на 2 курсе
(использовать шаблоны);
4. вывести на экран фамилии студентов, родившихся в первой половине года.
5. вывести информацию о студентах во время сдавших экзамены;
6. вычислить количество иногородних студентов (не проживающих в Тирасполе),
обучающихся на специальности ИВТ.
Download