Uploaded by бухгалтерия ООО ПечатникЪ

MMBD metodicheskie ukazania po kontr rab zaochnoe (2)

advertisement
ФГБОУ ВПО «САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ИМЕНИ ГАГАРИНА Ю.А.»
Кафедра «Прикладные информационные технологии»
Методические указания по выполнению контрольной работы
по дисциплине «Математическое моделирование баз данных»
для студентов 3–го курса направления «б-ИФСТ»
заочной формы обучения
Создание запросов на языке SQL
Задание
1.В соответствие с техническим заданием создать необходимые запросы на выборку,
добавление, удаление и изменение данных.
2.Предусмотреть для каждой группы пользователей не менее 10 запросов. Запросы
сохранить в файлах, имена файлов совпадают с именем групп пользователей, расширение
фалов .sql .
3.Каждый запрос проанализировать, и создать в таблицах необходимые индексы.
4.Отчёт должен содержать:
 титульный лист;
 описание разработанных запросов;
 для каждого запроса привести:
◦ назначение запроса,
◦ группы пользователей, которые будут его выполнять в процессе работы,
◦ текст запроса на языке SQL,
◦ скриншот результата выполнения запроса,
◦ список полей, для которых определены индексы.
Учебный пример разработки базы данных
Создание запросов
1.Удобнее начать с создания самых простых запросов. Такой запрос обычно осуществляет
выборку данных из одной таблицы.
Для нашей учебной базы данных «Кафе» это будет, например, запрос с именем «Меню
нашего кафе», который будет выдавать список предлагаемых блюд.
Запрос предназначен для всех групп пользователей: администраторы, повара, официанты
и клиенты.
Результат выполнения запроса может выглядеть так:
Обратите внимание, что здесь использована составная сортировка. Сначала данные
сортируются по виду блюда, а внутри каждого вида — в порядке уменьшения цены блюда.
Обратите внимание, что в запросе опущен столбец БЛ, а столбец Вид для удобства
поставлен перед столбцом Блюдо. Также для столбца Блюдо использован псевдоним «Название блюда».
На языке SQL запрос будет выглядеть так:
-- Меню нашего кафе
SELECT Вид, Блюдо AS [Название блюда],
FROM
Блюда
ORDER BY Вид, Цена DESC;
Цена
Для обеспечения максимальной скорости выполнения запроса создаются индексы.
Индексы это специальные структуры данных, связанные с таблицей и позволяющие резко
повысить скорость поиска (при больших объемах данных — на много порядков).
Индексы создаются для тех полей таблиц, по которым производится поиск, сортировка,
группировка.
Индексы бывают простые и составные. Индекс, построенный по значениям одного поля
— простой. Индекс, включающий несколько полей, — составной.
В нашем случае для составной сортировки нужен составной индекс по полям Вид и Цена.
Введем также простые индексы по этим же полям и по полю Блюдо, так как запросы на поиск
и упорядочение по этим полям также будут использоваться.
Переходим в таблицу Блюда, в режим Проект, и создаем четыре индекса, три простых и
один составной:
Обратим внимание, что индекс по первичному ключу создавать не надо, он всегда
строится автоматически при создании первичного ключа.
2.Теперь рассмотрим пример создания запроса с переменными. Кроме того, этот запрос
будет комбинировать данные из двух таблиц.
Запрос с именем «Продажи блюд» будет использовать период времени в виде начальной и
конечной даты и выдавать для каждого блюда количество проданных за этот период порций.
Также будет подсчитываться сумма продаж по каждому блюду за этот период.
На языке SQL запрос будет выглядеть так:
-- Продажи блюд
-- Объявление двух локальных переменных и задание их значений
DECLARE @StartDate datetime, @EndDate datetime;
SET @StartDate='25.10.2015';
SET @EndDate='25.10.2016';
-- запрос, использующий эти переменные
SELECT
Расход.id_блюда AS [Номер блюда],
Max(Блюда.Блюдо) AS Название,
Sum(Расход.Порций) AS [Кол-во проданных порций],
Sum([Цена]*[Порций]) AS [На сумму]
FROM
Блюда INNER JOIN
WHERE
Расход.Дата_р
GROUP BY
Расход ON
Блюда.id_блюда = Расход.id_блюда
Between @StartDate And @EndDate
Расход.id_блюда;
Результат выполнения запроса может выглядеть так:
3.С помощью запросов можно не только делать выборку данных, но и изменять данные.
Разработаем пример запроса на удаление данных.
Запрос «Удаление старых поставок» удалит все поставки до указанной даты.
На языке SQL запрос будет выглядеть так:
-- Удаление старых поставок
DELETE Дата_П
FROM
Поставки
WHERE Дата_П < #07/15/2013#;
Обратим внимание, что хотя после DELETE указано лишь одно поле Дата_П , удалятся
будут целиком записи (строки таблицы).
При использовании инструкции DELETE всегда удаляются записи целиком, а не
отдельные значения полей. Для изменения отдельных полей, в том числе для установки их в
значение NULL, используется инструкция UPDATE.
Для вставки новых записей в таблицу используетcя инструкция INSERT INTO.
4.Существуют ещё довольно много разных видов запросов. Например, перекрёстные
запросы, запросы на создание, изменение структуры и удаление различных объектов –
CREATE, ALTER, DROP и т.д.
Попробуйте самостоятельно подобрать наиболее удобный для работы каждой группы
пользователей набор запросов.
Надо также определить в таблицах все необходимые для быстрого выполнения запросов
индексы.
Download