Лабораторная работа №2
Тема: Виды запросов и способы их создания
Цель работы: научиться создавать запросы к базам данных.
Краткая теоретическая часть
Запросы являются инструментом поиска и структурирования данных. Запрос, адресованный одной или нескольким таблицам, инициирует выборку определенной части данных и их передачу в таблицу, формируемую самим запросом. В результате вы получаете подмножество информационного множества исходных таблиц, сформированное по определенному закону. Если обрабатываемый объем информации велик, выделение необходимых данных в такое подмножество позволяет существенно сократить время их обработки. В системах типа клиент-сервер, где основные базы данных хранятся на файловом сервере, система запросов позволяет уменьшить объем информации, передаваемой через локальную сеть
Запрос — это набор условий, согласно которым производится выборка информации из таблиц. Запуск запроса формирует новую таблицу данных, единственным отличием которой от обычных таблиц является то, что с помощью повторных запусков запроса ее данные можно обновлять в соответствии с изменением информации источников данных запроса.
Таблица 1 - Варианты запросов
Тип | Описание |
Выборка (Select); | Выборка данных в таблицу результата запроса на основе указанных условий отбора |
Перекрестный (Crosstab) | Результат запроса выводит статистические значения (сумму, количество или среднее) для одного из полей таблицы в зависимости от двух параметров других полей таблицы, задающих заголовки строк и столбцов результата перекрестного запроса |
Создание таблицы (Make-Table) | Создание новой таблицы в текущей или в другой базе данных на базе информации из имеющихся таблиц |
Обновление (Update) | Обновление данных таблицы |
Добавление (Append) | Добавление набора записей в таблицу |
Удаление (Delete) | Удаление записей таблицы в соответствии с указанным критерием |
|
Запросы делятся на:
простые,
перекрёстные,
групповые,
с параметром.
Откройте базу данных «Морские перевозки», выполненную на прошлом практическом занятии.
Задание 1. Создать запросы на выборку:
1. Все рейсы с указанием всех судов и грузов.
2. Перевозки из Севастополя в Стамбул.
3. Перевозки в Ялту грузов в количестве более 300 кг.
4. Перевозки в Сухуми, совершенные не позднее 10.02.2016.
5. Перевозки в пункты прибытия, начинающиеся на букву «С».
|
Нажимаем Далее, выбираем подробный (вывод каждого поля каждой записи) отчет, Далее, введите название запроса: Запрос 1.1. Готово. В базе данных появился Запрос 1.1, результатом работы которого является таблица данных с полями: номер рейса, название судна, груз, количество груза, единицы измерения, порт отправления, дата отправления, порт прибытия, дата прибытия. Таким образом, данные из трех таблиц были сведены в одну таблицу и наиболее полно отображают информацию о рейсе.
На вкладке Создать выбираем Конструктор запросов и выбираем следующие данные из таблиц Рейсы и Суда:
|
В условии отбора в пункте отправления ставим Севастополь, а в пункте назначения – Стамбул. Жмем на кнопку Выполнить, отбираются только записи по рейсам из Севастополя в Стамбул. Сохраняем под именем запрос 1,2. Аналогично выполняем запрос 1,3. В условии отбора в поле порт прибытия указываем ЯЛТА, а в поле количества груза >300.
В запросе 1,4 в поле порт прибытия указываем СУХУМИ, а в поле дата прибытия <=10.02.2016.
В запросе 1,5 в поле порт прибытия указываем LIKE С* (литеру С в русской раскладке).
Задание 2. Создать запрос с вычисляемым полем:
1. Прибыль за рейс, выполненный судном.
2. Время судна в пути.
В конструкторе запросов выбираем таблицы Рейсы и Суда, выберем поля Код рейса, Название судна, Доходы и Затраты. Остальное можно включить по желанию. Сохраняем запрос. Затем делаем вычисляемое поле – правая кнопка мыши, выбираем Построить и вводим в окне Построителя выражений формулу прибыли = доход – затраты. Жмем ОК. В заголовке поля вместо Выражение 1 пишем Прибыль за рейс. Появилось вычисляемое поле с результатом. Выполняем и сохраняем под именем Запрос 2,1.
Аналогично выполняем Запрос 2,2 с вычисляемым полем Время рейса.
Задание 3. Создать групповой запрос:
1. Количество рейсов, выполненных каждым судном.
1. Доход каждого судна по всем рейсам.
В конструкторе запросов выбираем две таблицы Суда и Рейсы, поля – Номер судна и Название из первой, Код рейса – из второй.
Затем нажимаем большую кнопку
(Итоги).
Под всеми полями в строке «Групповая операция» появилось слово «Группировка». У поля Код рейса меняем его на «Count» (количество). Что получается – строки в таблице Рейсы будут группироваться по номеру и названию судна (можно было бы оставить только номер или только название, оба выбраны для удобства). Выполните и сохраните запрос под именем Запрос 3.1.
|
Чтобы, посчитать доходы на все рейсы каждого судна, то вместо Count нужно поставить Sum, причем выбрать не поле Код рейса, а поле Доходы за рейс. Сохраните Запрос 3.2.
Задание 4. Создать запрос с параметром:
Рейсы, совершенные судном N. Это может быть и номер, и название судна.
Допустим, выборка будет осуществляться по названию. В конструкторе выбираем две таблицы – Рейсы и Суда, поля – номер и название судна, по рейсам: код, пункты назначения и отправления, даты. Если добавить таблицу Грузы, то можно еще указать какой груз везли.
Для установки параметра нажмем кнопку Параметры справа от кнопки Итоги и введем в поле Параметр слово «Название». Тип данных в данном случае оставляем текстовый, поскольку у поля Название судна как раз текстовый тип.
Сохраняем параметр. У поля Название судна в строке Условие отбора пишем наш параметр в квадратных скобках: [Название]. Выполняем запрос. Появилось окно с просьбой ввести название, вводим «Альфа».
Отобрались рейсы по этому судну.
Попробуйте ввести несколько первых букв вместо названия. Не отберется ничего. Для того чтобы длинные названия вводить по первым буквам, в условии отбора требуется написать такое выражение: Like ([Название]+"*"). Это значит, что будут отбираться те записи, которые начинаются с символов, указанных в параметре плюс любое количество любых символов.
Задание 5. Перекрёстный запрос по судам и грузам с итогами по количеству перевезённых грузов.
Создаем и сохраняем многотабличный запрос. Из таблицы СУДА берем название судна, из ГРУЗЫ– груз, из РЕЙСЫ– количество груза. Сохраняем как Запрос 5.1. Затем вызываем Мастер запросов, перекрестный запрос. В окне Создание перекрестных таблиц в разделе показать выбрать запрос 5.1.
Сохраняем как Запрос5,2_Перекрестный.
Предъявляем работу преподавателю.