
5сем / lab5_database
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Ассистент |
|
|
|
Б.К.Акопян |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №5 |
СОЗДАНИЕ ЗАПРОСОВ НА СЕРВЕРЕ MYSQL |
по курсу: БАЗЫ ДАННЫХ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4016 |
|
|
|
М.О. Жовтяк |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2022
Цель работы
Изучить инструкции языка SQL по манипулированию табличными данными.
Вариант работы
Вариант 14.
Библиотека в Хоббитонии есть библиотека «Башня Саурумана». Вы являетесь ее руководителем. Библиотека зарабатывает деньги, выдавая напрокат некоторые книги, имеющиеся в небольшом количестве экземпляров. Одной из задач разрабатываемой ИС является отслеживание финансовых показателей работы библиотеки. У каждой книги, выдаваемой в прокат, есть название, автор, жанр. В зависимости от ценности книги Вы определили для каждой из них залоговую стоимость (сумма, вносимая клиентом при взятии книги напрокат) и стоимость проката (сумма, которую клиент платит при возврате книги, получая назад залог). В библиотеку обращаются читатели. Все читатели регистрируются в картотеке, указывая свои персональные данные. Каждый читатель может обращаться в библиотеку несколько раз. Все обращения читателей фиксируются, при этом по каждому факту выдачи книги запоминаются дата выдачи и ожидаемая дата возврата. Стоимость проката книги должна зависеть не только от самой книги, но и от срока ее проката. Кроме того, необходимо добавить систему штрафов за вред, нанесенный книге и систему скидок для некоторых категорий читателей. Произведения авторов, составляющие библиотечный фонд, также можно разделить на различные категории, характеризующиеся собственным набором атрибутов: учебники, повести, романы, статьи, стихи, диссертации, рефераты, тезисы докладов и т.д. Сотрудники библиотеки, работающие в различных залах различных библиотек, ведут учет читателей, а также учет размещения и выдачи литературы.
Ход работы
Запросы реализуются в среде MySQL Workbench.
Реализуется однотабличный запрос на выборку с условием фильтрации (WHERE).
Задача 1. Вывести номера обращений, по которым были выданы книги 17 числа. Результат представлен на рисунке 1.
Рисунок 1 – Результат запроса по выбору id обращений с выдачей книг 17 числа
Реализуются два запроса на выборку к нескольким таблицам с условием фильтрации, сортировкой и группировкой (WHERE, ORDER BY, GROUP UP).
Задача 1. Вывести имена людей, которые делали хоть одно обращение в библиотеку. Результат представлен на рисунке 2.
Рисунок 2 – Результат запроса на выборку читателей библиотеки
Задача 2. Вывести количество обращений каждого читателя к библиотеке. Результат представлен на рисунке 3.
Рисунок 3 – Результат запроса на вывод количества обращений читателей к библиотеке
Реализуются два запроса с использованием агрегатных функций.
Задача 1. Вывести максимальный депозит книги автора. Результат представлен на рисунке 4.
Рисунок 4 – Результат вывода максимального депозита автора
Задача 2. Вывести количество обращений в библиотеку с ожидаемой датой возврата 2022-10-20. Результат представлен на рисунке 5.
Рисунок 5 – Результат запроса на вывод обращений с датой
Реализуется один запрос на обновление данных с условием.
Задача 1. Установить определенную цену аренды книг первого автора. Результат представлен на рисунке 6.
Рисунок 6 – Результат запроса на обновление аренды книг
Реализуется запрос на удаление данных с условием.
Задача 1. Удалить обращения, которые поступили 2022-10-16. Результат представлен на рисунке 7.
Рисунок 7 – Удаление обращений с определенной датой
Реализуется план выполнения любого запроса с помощью команды EXPLAIN. Результат представлен на рисунке 8.
Рисунок 8 – План выполнения любого запроса
Вывод
В ходе работы я научился создавать запросы в языке SQL. В данном случае конкретно работу с командами SQL по манипулированию данными, операторами фильтрации данных, агрегатными функциями. В итоге мной были созданы запросы под различные задачи.
В ходе работы проблем не возникло.
ПРИЛОЖЕНИЕ
USE my_library;
SELECT id_appeal FROM appeals
WHERE DAY(issue_date) = 17;
use my_library;
select distinct readers.reader_FIO from appeals, readers
where appeals.id_reader = readers.id_reader
ORDER BY readers.reader_FIO;
use my_library;
select readers.reader_FIO, COUNT(appeals.id_appeal)
from readers, appeals
WHERE appeals.id_reader = readers.id_reader
GROUP BY readers.reader_FIO;
use my_library;
select authors.author_FIO, MAX(books.deposit)
from authors, books
WHERE authors.id_author = books.id_author
group by authors.author_FIO
use my_library;
select COUNT(id_appeal) FROM appeals
where return_day_expected = '2022-10-20';
use my_library;
update books
set coast_per_day = 15
where id_author = 1;
select * from books
use my_library;
delete from appeals
where issue_date = '2022-10-16' limit 10;
select * from appeals
use my_library;
explain select * from appeals where id_reader = '1';
Список использованных источников
Учебно-методическое пособие «Разработка и администрирование базы данных с открытым исходным кодом» - Аграновский А.В., В.В. Боженко, Е.Л. Турнецкая, 2022 г.