Лабораторная работа № 3. Создание запросов в конструкторе

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

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

Access позволяет использовать для создания запросов инструменты с графическим интерфейсом – Конструктор и Мастер. Также доступно непосредственное написание запросов на языке SQL.

Работа с Мастером запросов очень похожа на рассмотренную ранее работу с Мастером форм: выбираем вкладку меню Создание → Мастер запросов, тип запроса, названия таблиц или запросов, выступающих источниками данных, и поля, которые из них берутся. Мастер позволяет очень быстро создавать запросы, но его возможности достаточно ограничены.

Задание. Используя базу lib.accdb из предыдущей лабораторной работы, с помощью Мастера создайте запрос на выборку данных об авторах и названиях книг из таблицы Book.

Конструктор позволяет создавать более сложные запросы, в частности, включающие условия фильтрации данных. Например, построим запрос, который выводит список изданий, выпущенных после 1997 г. Для этого на вкладке Создание выберем Конструктор запросов, в появившемся окне со списком таблиц и запросов выберем таблицу Book и закроем окно добавления таблиц. После этого в конструкторе надо перетащить мышью названия используемых в запросе полей в таблицу, расположенную в нижней половине окна конструктора (или выбрать столбцы в выпадающем списке в строке "Поле"), и установить для поля BookYear условие отбора (рис. П.3.1).

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

Рис. П. 3.1. Создание запроса в режиме конструктора

Условия отбора могут быть самые разнообразные – можно использовать в запросах арифметические и логические операторы, операторы сравнения, специальные операторы сравнения с образцом (табл. П.3.1), доступные в Access функции.

Таблица П.3.1

Специальные операторы сравнения с образцом

Оператор

Пример

Описание

Between

Between (-100) And (100)

Находится ли значение в заданном интервале

Is

Is Null Is Not Null

Проверка значения на равенство (неравенство) Null

In

In ('БХВ';'Азбука )

Проверка на принадлежность ко множеству, перечисленному в скобках. В конструкторе разделитель элементов ";", в режиме SQL – ","

Like

Like C*- Like 'db? ' Like '[Б-Е]*' Like '[Б.П]*'

Определяет соответствие строкового значения шаблону. Символ "*" (обозначает любое число произвольных символов) или "?" (обозначает один символ). В квадратных скобках можно указать конкретные символы или диапазон символов допустимых в этой позиции

Задание. Создайте в конструкторе SQL запрос, выводящий информацию об изданиях (автор, название, год), выпущенных с 1997 по 1999 г.

Задание. Напишите запрос, выводящий названия книг, где вторая буква фамилии автора"е" (фамилию автора выводить не надо). Если быть более точным, в этом задании надо найти записи со второй буквой се" в поле со списком авторов.

Запросы могут включать в себя и вычисляемые поля. Для этого в окне конструктора вместо имени очередного столбца надо подставить выражение (вручную или используя построитель выражений, запускаемый кнопкой Построитель на вкладке Конструктор панели инструментов). Не забудьте отмстить галочкой check-box "Вывод на экран". На рис. П.3.2 показано создание запроса, выводящего текущий год и количество изданий в таблице Book. Для получения первого значения используются уже известные нам по первой лабораторной функции NowQ и Year(). Для нахождения второго значения используется агрегатная функция Count(BooklD), подсчитывающая количество значений в соответствующем столбце. Предлагаемая

построителем выражений подпись – "Выражение 1" – не слишком информативна, поэтому в свойствах столбца она заменена.

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

Запрос с вычисляемыми полями

Рис. П.3.2. Запрос с вычисляемыми полями

Есть еще один интересный тип запросов – запросы с параметром. Они используются тогда, когда нам требуется вывести набор данных определенного вида, но то, какие конкретно данные нам нужны, определяется параметром, значение которого заранее неизвестно. Параметр должен быть введен непосредственно перед выполнением запроса. Указанием на то, что надо вывести окно для ввода параметра, служат квадратные скобки, в которые заключен заголовок выводимого окна. Например, если в конструкторе в поле Условие отбора для столбца с годом издания книги ввести =[ Введите год], то Access в начале выполнения запроса выдаст окно с заголовком "Введите год", а после будет сравнивать введенное значение со значением соответствующего поля отбираемых записей.

Задание. Постройте запрос, выводящий книги, изданные после заданного года (указывается как параметр).

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

Задание. Постройте запрос, выводящий библиотечный номер книги (из таблицы Book_in_Lib), название и автора. Обратите внимание, что по умолчанию будут отбираться данные только о тех книгах, информация о которых есть и в той и в другой таблице. Соответствующую настройку можно поменять, выделив в конструкторе связь между таблицами и выбрав в контекстном меню пункт Параметры объединения (рис. П.3.3). Создайте в конструкторе вариант запроса, выводящий название и автора для всех книг, и библиотечный номер (ПЬЮ) для тех, экземпляры которых есть в связанной таблице.

Выборка данных из связанных таблиц

Рис. П.3.3. Выборка данных из связанных таблиц

 
< Пред   СОДЕРЖАНИЕ     След >