- •Техническое задание № 9
- •Тема 9 Информационная система по продаже билетов в аэропорту
- •Введение
- •Инфологическое проектирование
- •Описание предметной области
- •Разработка инфологической модели
- •Даталогическое моделирование
- •Создание таблиц
- •Создание связей между таблицами
- •Создание ограничений (Default и Check)
- •Создание реляционной модели
- •Заполнение таблиц данными
- •Работа с запросами
- •Создание запросов для просмотра, добавления и редактирования информации
- •Создание основных запросов
- •Заключение
Работа с запросами
Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы – это, по сути, операции над таблицами. Благодаря запросам можно объединять, просматривать, дополнять и редактировать информацию из таблиц.
Создание запросов для просмотра, добавления и редактирования информации
Текст запроса №1:
Просмотр, добавление и редактирование информации о пассажирах.
Код запроса для просмотра информации о пассажирах:
SELECT *
FROM Пассажир;
Результат данного кода представлен на рисунке 31:
Рисунок 31 – просмотр информации о пассажирах
Код запроса для добавления информации о пассажирах:
ALTER TABLE Пассажир
ADD (Гражданство varchar2(20));
Результат данного кода представлен на рисунках 32-33:
Рисунок 32 – добавление информации о пассажирах
Рисунок 33 – добавление информации о пассажирах
Код запроса для редактирования информации о пассажирах:
UPDATE Пассажир
SET Отч= ‘Алимович’
WHERE ном_док= ‘4020426152’;
Результат данного кода представлен на рисунках 34-35:
Рисунок 34 – редактирование информации о пассажирах
Рисунок 35 – редактирование информации о пассажирах
Текст запроса №2:
Просмотр, добавление и редактирование информации в расписании полётов самолётов.
Код запроса для просмотра информации расписания полётов самолётов:
SELECT *
FROM Рас_пол;
Результат данного кода представлен на рисунке 36:
Рисунок 36 – просмотр информации расписания полётов самолётов
Код запроса для добавления информации в расписание полётов самолётов:
ALTER TABLE Рас_пол
ADD (Длит_пол varchar2(15));
Результат данного кода представлен на рисунках 37-38:
Рисунок 37 – добавление информации в расписание полётов самолётов
Рисунок 38 – добавление информации в расписание полётов самолётов
Код запроса для редактирования информации в расписании полётов самолётов:
UPDATE Рас_пол
SET Стоим_бил= ‘12000’
WHERE Ном_рейса= ‘U6 547’;
Результат данного кода представлен на рисунках 39-40:
Рисунок 39 – редактирование информации в расписании полётов самолётов
Рисунок 40 – редактирование информации в расписании полётов самолётов
Создание основных запросов
Текст основного запроса №1:
Вывести перечень всех работников аэропорта (фамилия, имя, должность, название отдела, стаж работы, пол, возраст, наличие и количество детей) с указанием общего числа всех работников.
Код запроса:
SELECT Сотр.Фам, Сотр.Имя, Сотр.Назв_долж, Отдел.Название, ROUND((SYSDATE - Дата_пр_р)/365) ||' лет' Стаж, Сотр.Пол, ROUND((SYSDATE - Д_Р)/365) ||' лет' Возраст,
CASE
WHEN Сотр.Кол_дет=0 THEN 'Отсутствуют'
ELSE to_char(Сотр.Кол_дет)
END Дети
FROM Сотр
LEFT JOIN Отдел ON Сотр.id_отд=Отдел.id_отд
UNION
SELECT 'Общее число:', to_char(COUNT(id_сотр)), null, null, null, null, null, null
FROM Сотр
LEFT JOIN Отдел ON Сотр.id_отд=Отдел.id_отд
ORDER BY Имя;
Результат данного кода представлен на рисунке 41:
Рисунок 41 – результат основного запроса №1
Текст основного запроса №2:
Вывести перечень и общее число пассажиров, купивших билет на указанный рейс в указанный день. В качестве примера был взят рейс - SU 035 и дата - 10 мая 2021 год.
Код запроса:
SELECT Билет.*, Пассажир.Вид_док, Пассажир.Имя, Пассажир.Фам, Пассажир.Отч, Пассажир.Д_Р, Пассажир.Гражданство
FROM Билет
LEFT JOIN Пассажир ON Пассажир.Ном_док=Билет.Ном_док
WHERE Дата='10-май-21' AND Ном_рейса='SU 035'
UNION
SELECT 'Общее число:', to_char(COUNT(Ном_бил)), null, null, null, null, null, null, null, null, null
FROM Билет
LEFT JOIN Пассажир ON Пассажир.Ном_док=Билет.Ном_док
WHERE Дата='10-май-21' AND Ном_рейса='SU 035';
Результат данного кода представлен на рисунке 42:
Рисунок 42 – результат основного запроса №2
Текст основного запроса №3:
Вывести перечень сотрудников, имеющих детей младше 5 лет, и общего их (сотрудников) числа.
Код запроса:
SELECT Сотр.*
FROM Дети
LEFT JOIN Дети_Сотр ON Дети.id_реб=Дети_Сотр.id_реб
LEFT JOIN Сотр ON Дети_Сотр.id_сотр=Сотр.id_сотр
WHERE ((SYSDATE - Дети.Д_Р)/365)<5
UNION
SELECT 'Общее число:', to_char(COUNT(Дети_Сотр.ID_сотр)), null, null, null, null, null, null, null
FROM Дети
LEFT JOIN Дети_Сотр ON Дети.id_реб=Дети_Сотр.id_реб
WHERE ((SYSDATE - Дети.Д_Р)/365)<5;
Результат данного кода представлен на рисунке 43:
Рисунок 43 – результат основного запроса №3
Текст основного запроса №4:
Вывести перечень и общее число самолётов, находящихся в аэропорту в указанный период времени. Выбранный период – 10 мая 2021 года с 13:00 до 15:00 часов.
Код запроса:
SELECT id_сам, null
FROM Рас_стоян
WHERE
(((Дата_прил = to_date('10-МАЙ-21', 'DD-MON-YY')) and (to_date(Время_прил, 'HH24:MI') < to_date('15:00', 'HH24:MI'))) or
((to_date('10-МАЙ-21', 'DD-MON-YY') > Дата_прил) AND (to_date('10-МАЙ-21', 'DD-MON-YY') < Дата_отл)) or
((Дата_отл = to_date('10-МАЙ-21', 'DD-MON-YY')) and (to_date(Время_отл, 'HH24:MI') > to_date('13:00', 'HH24:MI'))))
UNION
SELECT 'Общее число:', to_char(COUNT(ID_сам))
FROM Рас_стоян
WHERE
(((Дата_прил = to_date('10-МАЙ-21', 'DD-MON-YY')) and (to_date(Время_прил, 'HH24:MI') < to_date('15:00', 'HH24:MI'))) or
((to_date('10-МАЙ-21', 'DD-MON-YY') > Дата_прил) AND (to_date('10-МАЙ-21', 'DD-MON-YY') < Дата_отл)) or
((Дата_отл = to_date('10-МАЙ-21', 'DD-MON-YY')) and (to_date(Время_отл, 'HH24:MI') > to_date('13:00', 'HH24:MI'))));
Результат данного кода представлен на рисунке 44:
Рисунок 44 – результат основного запроса №4
Текст основного запроса №5:
Вывести перечень сотрудников, получающих пособие на детей, оклад, размер этого пособия и общая сумма пособия по всем сотрудникам.
Код запроса:
SELECT Сотр.Имя, Сотр.Фам, Долж.Оклад, Долж.Оклад*0.1 AS ПОСОБИЕ
FROM Сотр
LEFT JOIN Долж on Сотр.Назв_долж = Долж.Назв_долж
RIGHT JOIN Дети_Сотр on Сотр.ID_сотр = Дети_Сотр.ID_сотр
UNION
SELECT 'Общая сумма', 'пособия:', null, SUM(Долж.Оклад*0.1)
FROM Сотр
LEFT JOIN Долж on Сотр.Назв_долж = Долж.Назв_долж
RIGHT JOIN Дети_Сотр on Сотр.ID_сотр = Дети_Сотр.ID_сотр;
Результат данного кода представлен на рисунке 45:
Рисунок 45 – результат основного запроса №5
