Microsoft Access ЗАПРОСЫ В MICROSOFT ACCESS Методические указания к лабораторной работе 4 Цель работы: освоить построение различных типов запросов в режиме Конструктора и с помощью встроенных Мастеров; получить представление об основных операторах языка SQL. Существуют два основных типа запросов: запросы на выборку, выполняющие извлечение данных, предназначенных для отображения. управляющие запросы, выполняющие вставку, изменение или удаление данных. В СУБД Microsoft Access для создания всех типов одной или запросов предназначена вкладка «Запросы» (рисунок 1). Рисунок 1 – Окно базы данных ЗАПРОСЫ НА ВЫБОРКУ Запросы на выборку извлекают данные из нескольких таблиц в соответствии с заданными условиями. В режиме Конструктора условия задаются в поле «Условие отбора» по определенным синтаксическим правилам. Таблица 1 – Задание условий отбора в режиме Конструктора Поле Условие отбора Город Тольятти Москва Фамилия OR Like K* Дата заказа Between 10.09.03 15.09.03 and Операторы, используемые при создании запросов на выборку Математические операторы (*, +, -, /, \ - деление нацело, ^, mod – деление по модулю). Например, Скидка:Цена*0,05. Операторы сравнения (=, <> ,< ,> ,<= ,>=). Выражения, использующие эти операторы, всегда принимают одно из трех значений: истина, ложь, нуль. Например, Цвет= «Белый» истинно, если в поле стоит значение «Белый». Булевы (логические) операторы (and, or ,not). Например, яблоки or финики. 1 Microsoft Access Строковые операторы (Like – сравнение с заданным образцом, & конкатенация или склеивания строк). Например, ФИО: Фамилия & Имя. Вспомогательные операторы (between … and, in). Например, between 10.09.03 and 15.09.03. Приоритет операторов Если в одном запросе используется несколько операторов, то они выполняются в следующем порядке: 1. Математические. 2. Операторы сравнения. 3. Булевы. 4. Строковые. 5. Вспомогательные. Параметрические запросы При запроса выполнении условие предлагается параметрического выборки задать в (параметр) окне с полем ввода (рисунок 2). Для создания такого окна Рисунок 2- Окно с полем ввода в строке «Условие отбора» разместить прямоугольные скобки, внутри которых ввести текст сообщения для пользователя, например [Введите фамилию]. Если задать условия отбора следующего вида Like [Введите фамилию] & "*", то поиск будет осуществляться по любому количеству букв, вводимых в поле поиска. Запросы с вычислениями Различают два типа таких запросов. Это итоговые запросы и запросы с вычисляемыми полями. Итоговые (групповые) запросы Позволяют поля подытожить целиком (группе). Для используются или в данные из некоторого определенном интервале подведения различные таких функции, итогов наиболее применяемые из которых – Sum() (сумма значений), Avg() (среднее значение), Count() Рисунок 3- Выбор функции в групповом запросе (количество (максимальное значение), Min() (минимальное значение). 2 строк), Max() Microsoft Access Для создания итогового запроса необходимо в меню “Вид” выбрать команду “Групповые операции” или нажать кнопку с буквой ∑ на панели инструментов. При этом в бланке запроса появится строка “Групповая операция”. По умолчанию в этой строке выведено слово “Группировка” для группировки данных. Для проведения вычислений по нужному полю вместо слова “Группировка” следует выбрать ту или иную функцию (рисунок 3). Перекрестные запросы Перекрестные запросы являются разновидностью групповых. Итоговые значения, вычисляемые с помощью агрегирующих функций (Sum(), Avg() и т.д.) находятся на пересечении столбцов и строк. Результирующий набор данных приведен в таблице 2. Таблица 2 – Результат выполнения перекрестного запроса Для создания перекрестного запроса необходимо в меню “Запрос” выбрать команду “Перекрестный” (пример формирования запроса приведен на рисунке 4). При этом в бланке запроса появится строка “Перекрестная таблица”, в (Диски.Name) которой и можно столбцов выбрать (Family). поля Итоговые для данные заголовков строк подсчитываются с помощью функции count(), аргументом которой является поле InUse. Рисунок 4 – Пример формирования перекрестного запроса Запросы с вычисляемыми полями Эти запросы позволяют производить действия с помощью создаваемых выражений над числовыми и строковыми значениями или над значениями дат, которые выполняются для всех записей с использованием значений одного или нескольких полей. Результаты вычислений в вычисляемом поле не запоминаются в базовой таблице. Вместо этого, вычисления снова производятся всякий раз, когда выполняется запрос, поэтому результаты всегда представляют текущее содержимое базы данных. Обновить вычисленные результаты вручную невозможно. Для ввода выражения следует создать новое вычисляемое поле в режиме Конструктора и ввести выражение вручную или с помощью Построителя выражений, упрощающего эту процедуру. Например, . 3 Microsoft Access УПРАВЛЯЮЩИЕ ЗАПРОСЫ Запросы на удаление Запросы на удаление используются для удаления данных, удовлетворяющих определенному условию. Например, можно удалить данные до определенной даты и к настоящему времени устаревшие. Для изменения вида запроса необходимо в меню «Запрос» выбрать команду «Удаление». В бланке запроса, в строке «Условие отбора» следует ввести условие отбора удаляемых записей. Внимание! После выполнения запроса на удаление все, отвечающие условию записи будут удалены без возможности их восстановления. Запросы на обновление Эти запросы используются для обновления информации в одном или нескольких полях отобранных записей. То есть, они позволяют отобрать записи по какому-либо критерию (что, как уже известно, делают и простые запросы на выборку) и обновить информацию в указанных полях этих записей. Запросы на добавление С помощью запросов на добавление записи из одной таблицы (все или отобранные этим же запросом) можно поместить (скопировать) в другую таблицу. При этом обе таблицы могут находиться как в одной, так и в разных базах данных. Просмотр запросов в режиме SQL Все виды запросов, созданные в режиме Конструктора или с помощью Мастеров, СУБД Microsoft Access представляет на языке SQL. Для просмотра необходимо выбрать в меню “Вид” команду “Режим SQL”. Контрольные вопросы 1. Перечислите операторы, используемые при создании запросов на выборку. 2. В каком порядке выполняются разные типы операторов, используемые в одном запросе? 3. Какие виды запросов можно создать в СУБД Microsoft Access? 4. Каким образом формируется параметрический запрос? 5. Какие функции используются в групповых запросах для подсчета итоговых значений? 4 Microsoft Access Лабораторная работа 4. ЗАПРОСЫ В базу данных, созданную на лабораторной работе 3, из базы данных …\Мои документы\БД_ИТ\Базы Данных\Фрукты.mdb импортируйте таблицы «Фрукты», «Описания наборов», «Наборы», «Заказы», «Покупатели», «Служащие». Запросы на выборку Все запросы создайте в режиме Конструктора и просмотрите в режиме SQL (меню Вид Режим SQL или соответствующий значок на панели инструментов – рисунок 1). Создайте запросы, предоставляющие следующую информацию: 1. Найдите поочередно фрукты разных категорий: Рисунок 1 – Панель инструментов a. свежие (код категории=1); b. сушеные (код категории=2); c. засахаренные (код категории=3); d. в шоколаде (код категории=4). Преобразуйте запрос на выборку в параметрический запрос. При выполнении запроса значение (параметр) вводится в формируемом программой окне, представленном на рисунке 2. Рисунок 2 – Окно с полем ввода 2. Представьте список наборов, вес который больше 2 кг, а цена меньше 200 руб. 3. В какие города были отправлены заказы, сделанные с 5 по 11 ноября 1996г. включительно? 4. Используя таблицы «Фрукты», «Описания наборов» и «Наборы», ответьте на вопрос: из каких фруктов состоит каждый набор. 5. Вычислите цену со скидкой 5% для наборов, цена которых больше 150 руб. Назовите новое поле «Цена со скидкой» (см. пример оформления Отчета). 6. Необходимо выяснить какие наборы, по какой цене и какого числа были отправлены в города Тольятти и Москву. 7. Необходимо просмотреть в одной таблице все засахаренные фрукты и фрукты в шоколаде, у которых стоимость меньше 6 руб. 8. Покажите засахаренные и фрукты в шоколаде. И у тех и у других цена меньше 6 руб. 9. У кого из служащих нет фото? 10. Кажется, что фамилия покупателя заканчивается на -чук. Помогите найти его адрес и телефон. Отчет по лабораторной работе 4 необходимо представить в письменном виде в тетради. Пример оформления отчета представлен в таблице 1. Таблица 1 – Запросы на выборку № запр. 2 Поле(я) ввода условий Условие(я) отбора Вес >2000 Цена <200 51 Цена >150 1В запросе создано вычисляемое поле: Цена со скидкой: [Наборы]![Цена]-[Наборы]![Цена]*0,05. SQL-код WHERE Наборы.Веc>2000 AND Наборы.Цена<200; WHERE Наборы.Цена>150 Групповые запросы Для создания групповых запросов выполните команду: меню Вид Групповые операции. Пример формирования запроса 1 представлен на рисунке 3. 1. Сгруппируйте фрукты по категориям и найдите среднее значение цены, затем Рисунок 3 – Окно конструктора максимальное и минимальное. 2. Подсчитайте количество покупателей в каждом городе. 3. Найдите количество наборов в каждой весовой категории. Пример оформления отчета по данному разделу представлен в таблице 2. Таблица 2 – Групповые запросы № запр. 3 Поле группировки Вес Агрегирующие функции COUNT() 5 SQL-код ………полностью……… Microsoft Access Перекрестные запросы 1. Используя таблицы «Наборы», «Заказы» и «Описания заказов» создайте запрос на выборку, включающий следующие поля: Код набора, Название набора и Город. 2. Используя созданный запрос, с помощью Мастера (рисунок 4) представьте в перекрестной таблице информацию о количестве наборов, отправленных в каждый Рисунок 4 – Запуск Мастера создания город. Для подсчета количества перекрестных запросов наборов используется функция COUNT(), аргументом которой является поле Код набора. Просмотрите результат. Затем введите ограничение, позволяющее просмотреть только те наборы, в названии которых есть слово «фрукт». Фрагмент результирующей таблицы представлен на рисунке 5. Рисунок5 – Результат выполнения перекрестного запроса Запрос на создание В режиме конструктора запросов выберите в меню Запрос команду Создание таблицы, и, следуя указаниям программы, создайте таблицу «Овощи» с полями Название и Цена. Затем откройте созданную таблицу на странице Таблицы окна базы данных и заполните её (2 - 3 записи). Запрос на добавление В окне базы данных скопируйте таблицу Овощи и сохраните только её структуру в таблице Овощи 1. В режиме Конструктора создайте запрос, выбирающий все поля из таблицы «Овощи», и задайте условия отбора для последующего переноса отобранных данных в таблицу Овощи 1 (например Цена < 20). Просмотрите результат. Затем в меню Запрос выберите команду Добавление и в выпадающем списке выберите имя таблицы, куда будут добавлены (скопированы) выбранные записи. Знаком запустите выполнение запроса. Запрос на удаление В режиме Конструктора создайте запрос, выбирающий все поля из таблицы «Овощи». Затем в меню Запрос выберите команду Удаление и задайте условия отбора для удаления строк. Запустите запрос. Запрос на обновление В режиме Конструктора создайте запрос, выбирающий все поля из таблицы «Овощи». Затем в меню Запрос выберите команду Обновление и задайте условия отбора для обновления строк. Запустите запрос. Создание запросов с помощью мастеров (простой, повторяющиеся записи, вопрос без подчиненных) Самостоятельно разобрать работу мастеров, следуя указаниям программы. 6