Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Распределенные базы данных. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
853 Кб
Скачать

Рис. 2. Различныетипы соединениятаблиц с помощью оператора JOIN

П. Д. КУЛПЕППЕР, Е. Е. КОВАЛЕВ. РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ. ЛАБОРАТОРНЫЙ ПРАКТИКУМ

AVG вычисляетсреднеедлявсехвыбранныхзначенийданногополя;

МАХ вычисляетнаибольшее из всех выбранных значенийданно- го поля;

MIN вычисляетнаименьшее из всех выбранных значенийданно-

го поля.

Аргументами агрегирующих функций чаще всего являются поля таблицы, но также допустимо работать с константами и функциями в сочетании с арифметическими операторами.

Задание

1.Создать базу данных «Аэропорт».

2.Внести данные втаблицы (10–15 строчек).

3.Сформировать SQL запросы.

Структура базы данных

В базе данных должны быть следующиетаблицы:

Пассажиры основные сведения о пассажире: ФИО, номер рей- са, номер места, город назначения, стоимость билета, тип билета (эконом, бизнес);

Билеты на рейсы сведения одоступных билетах: номер рейса, количество доступных билетов и их стоимость по классам (биз- нес/эконом);

Сотрудники сведения о сотрудниках: ФИО, должность, опыт работы;

Рейсы сведенияорейсах: времявылета, типвоздушногосудна, город вылета.

Также можно создавать дополнительные таблицы при необходи- мости. Таблицы в базе данных должны находиться в 3-й нормальной форме.

Общиетребования для полей:

все поля не должны содержать NULL значений;

необходимо ставить ограничения (например, больше нуля) длятех полей, где это применимо.

Запросы

1.Примените Left Outer Join к двум таблицам и напишите крат- кий вывод о его работе.

2.Примените Right Outer Join к двум таблицам и напишите крат- кий вывод о его работе.

12

ЛАБОРАТОРНАЯ РАБОТА№3

3.Примените Left Excluding Join к двум таблицам и напишите краткий вывод о его работе.

4.Примените Right Excluding Join к двум таблицам и напишите краткий вывод о его работе.

5.ПрименитеInner Join кдвумтаблицаминапишитекраткийвы- вод о его работе.

6.Примените Join к двум таблицам и напишите краткий вывод о его работе.

7.Примените Full Outer Join к двум таблицам и напишите крат- кий вывод о его работе.

8.ПрименитеCross Join кдвумтаблицаминапишитекраткийвы- вод о его работе.

9.Посчитайте количество человек, летящих бизнес-классом.

10.Посчитайтеколичествопилотов, укоторыхстажработыбольше 5 лет.

11.Посчитайте для каждого города количество рейсов.

12.Выведите количество человек, прилетающих в каждый город.

13.Выведите среднюю стоимость билетов в экономклассе.

14.Выведитесамыйдорогойисамыйдешевыйбилет(используйте

UNION).

15.Выведите общую стоимость всех проданных билетов для каж- дого рейса.

13

ЛАБОРАТОРНАЯ РАБОТА 4

Условный оператор, агрегирующие функции, представления (VIEW)

В SQL в качестве управляющих команд ветвления используются команды IF-THEN-ELSE и CASE.

Представление (VIEW) – объект базы данных, являющийся ре- зультатом выполнения запроса к базе данных, определенного с по- мощью оператора SELECT, в момент обращения к представлению.

Представления иногда называют «виртуальными таблица- ми». Такое название связано с тем, что представление доступно для пользователя как таблица, но само оно не содержит данных, а извлекает их из таблиц в момент обращения к нему. Если данные изменены в базовой таблице, то пользователь получит актуальные данные при обращении к представлению, использующему данную таблицу [4].

Представления могут основываться как на таблицах, так и на дру- гих представлениях, т. е. могут быть вложенными.

Задание

1.Использоватьбазуданных«Аэропорт», созданнуювлаборатор- ной работе № 3.

2.Сформировать SQL запросы.

Запросы

1.Выведите сведения о сотрудниках и для каждого сотрудника подпишите его статус в зависимости от опыта работы. Напри- мер, если человек работает меньше года, то статус стажер, если больше 25 летветеран ит. п. Придумайте 4–5 различных статусов в зависимости от опыта работы.

2.Для каждого самолета определите, что является более вы- годным: продавать билеты в бизнес-класс или в эконом. Если для самолета общая стоимость билетов в бизнес-классе боль- ше, чем общая стоимость билетов в экономклассе, то выведите среднюю стоимость билета в бизнес-классе для данного воз- душного судна; иначе среднюю стоимость билетов в эконом- классе. Округлите до 2 знаков после запятой. Выведите резуль- тат запроса в виде (табл. 2):

14

 

 

ЛАБОРАТОРНАЯ РАБОТА№4

 

 

Таблица 2

 

Пример вывода результата запроса

 

 

 

ТипВС

Вывод

Средняяценабилета

 

 

 

А-320

выгоднее продавать бизнес-класс

42300.53 руб

 

 

 

ТУ-154

выгоднее продавать экономкласс

8340.00 руб

 

 

 

3.Создайте и выведите представление (View), в котором содер- жится информация о количестве полетов по каждому летчику.

4.Измените созданное в пункте 3 представление, при этом пере- именуйте названия столбиков. Также теперь в представлении должны быть только летчики, у которых опыт работы больше 1 года.

5.Измените данные (добавьте/удалите), на основе которых стро- ится представление из 3-го пункта. Сделайте вывод о том, как изменилисьданные в представлении.

15

ЛАБОРАТОРНАЯ РАБОТА 5

Создание многотабличной БД, нормализация таблиц, вложенные запросы, агрегирующие функции, работа с датой и временем, оператор UPDATE

Вложенный запросэто запрос на выборку, который используется внутри инструкции SELECT, INSERT, UPDATE или DELETE или внутри другого вложенного запроса. Подзапрос может быть использован вез- де, где разрешены выражения.

Каждый вложенный запрос, в свою очередь, можетсодержать один или несколько вложенных запросов. Количество вложенных запросов в инструкции не ограничено.

Подзапрос может содержать все стандартные инструкции, разре- шенныедляиспользованиявобычномSQL запросе: DISTINCT, GROUP BY, LIMIT, ORDER BY, объединениятаблиц, запросов ит. д.

Подзапрос может возвращать одно значение, одну строку, один столбецилитаблицу(однуилинесколькострокизодногоилинесколь- кихстолбцов). Ониназываютсяскалярными, столбцовыми, строковы- ми итабличными подзапросами.

Для работы с датой и временем в SQL есть несколько типов дан-

ных: DATE, TIME, DATETIME и TIMESTAMP.

Типы данных DATETIME и TIMESTAMP в SQL похожи друг на друга, так как оба направлены на хранение даты и времени. Но между ними есть ряд существенных отличий.

DATETIME хранит значения в диапазоне от 1000-01-01 00:00:00

до 9999-12-31 23:59:59 и при этом занимает 8 байт. Этот тип данных не зависит от временной зоны, установленной в SQL. Он всегда ото- бражается ровно в таком виде, в котором был установлен и в котором хранится в базе данных, и, например, при изменении часового пояса отображение времени не изменится.

TIMESTAMP хранит, сколько прошло секунд с 1970-01-01 00:00:00

по нулевому часовому поясу, и занимает 4 байта. При выборках ото- бражается с учетом текущего часового пояса. Часовой пояс можно задать в настройках операционной системы, где работает СУБД, в глобальных настройках или в конкретной сессии. В базе данных при создании записи с типом TIMESTAMP значение сохраняется по нулевому часовому поясу [6].

16

ЛАБОРАТОРНАЯ РАБОТА№5

SQL оператор UPDATE используется для обновления существую- щих записей втаблицах:

UPDATE table_name SET column1 = value1, column2 = value2 [WHERE];

С помощью команды WHERE можно выбирать записи, которые бу- дут отредактированы с помощью команды UPDATE. Команда WHERE не является обязательной, если ее не указать, будут обновлены все записи втаблице.

Задание

1.Создать базу данных «Нарушения ПДД».

2.Внести данные втаблицы (10–15 строчек).

3.Сформировать SQL запросы.

Структура базы данных

В базе данных должны быть следующиетаблицы:

Нарушения ФИО водителя, совершившего нарушение, номер автомобиля, тип нарушения, сумма штрафа, дата нарушения

(YYYY-MM-DD) и дата оплаты (YYYY-MM-DD);

Штрафы сведения о видах штрафа: описание нарушения и сумма штрафа (это базовая сумма, она может быть увеличена

или уменьшена втаблице «Нарушения»).

Также можно создавать дополнительные таблицы при необходи- мости. Таблицы в базе данных должны находиться в 3-й нормальной форме.

При заполнении таблицы «Нарушения» несколько полей (сумма штрафа, дата оплаты) оставить пустыми (NULL).

Запросы

1.Выведите только те номера машин, которые совершили нару- шение в указанный месяц. Отсортируйте номера по алфавиту.

2.Выведите ФИО водителя, номер автомобиля и время в днях, закотороеоноплатилсвойштраф(тех, ктоштрафещенеопла- тил, не включать в запрос).

3.Выведите информацию о водителях, которые оплатили штраф в кратчайшие сроки (использовать функцию min и вложенный запрос).

4.Посчитайте, сколько штрафов было выписано в каждом ме- сяце. В результате должна получиться табличка, содержащая

17

П. Д. КУЛПЕППЕР, Е. Е. КОВАЛЕВ. РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ. ЛАБОРАТОРНЫЙ ПРАКТИКУМ

название месяца и количество штрафов в нем. Если в каком-то месяце не было нарушений, то ничего выводить не нужно.

5.Выведитефамилию, номермашиныинарушениетолькодлятех водителей, которые нарушили одно и то же правило несколько раз. Нужно учитыватьвсе нарушения вне зависимости отопла- ты. Отсортировать по нарушению.

6.Для водителей, у которых сумма штрафа еще не задана (NULL), установите с помощью UPDATE сумму штрафа по таблице «Штрафы».

7.Увеличьте штраф на 30% всем водителям, которые еще его не оплатили.

8.Удалите устаревшие записи из таблицы «Нарушения», т. е. штрафы, оплаченные более двух лет назад.

18

ЛАБОРАТОРНАЯ РАБОТА 6

Операторы UPDATE, INSERT, DELETE, триггеры

В языке SQL есть три команды манипулирования данными (DML): INSERT, DELETE и UPDATE.

Команда INSERT служитдлядобавления записей в конец существу- ющейтаблицы:

Типы значений (VALUES) должны соответствоватьтипам полейта- блицы, в которую происходит вставка. Строки и даты должны заклю- чаться в одинарные кавычки. Также вместо VALUES данные можно выбрать c помощью запроса:

Записи из таблицы удаляются командой DELETE. Эта команда по- зволяет удалить одну или несколько строк из таблицы в соответствии с условиями:

Командаудаленияможетудалятьтольковведенныестроки, анеин- дивидуальные значения полей. Если условие не указано, то будут уда- лены все записи изтаблицы, при этом ее структура сохранится.

ДляизменениясуществующихданныхвтаблицевSQL использует- ся команда UPDATE.

Триггеры представляют специальный тип хранимой процедуры, которая вызывается автоматически при выполнении определенного действия надтаблицей или представлением, в частности, при добав- лении, изменении или удалении данных, т. е. при выполнении ко- манд INSERT, UPDATE, DELETE. Триггеры по своей сути являются об- работчиками событий. Они позволяют автоматизировать некоторые действия.

Формальное определениетриггера:

Для создания триггера применяется выражение CREATE TRIGGER, после которого идетимятриггера. Как правило, имятриггера отража- еттип операций и имятаблицы, над которой производится операция.

19

П. Д. КУЛПЕППЕР, Е. Е. КОВАЛЕВ. РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ. ЛАБОРАТОРНЫЙ ПРАКТИКУМ

Каждыйтриггерассоциируетсясопределеннойтаблицейилипред- ставлением, имя которых указывается после слова ON.

Затем устанавливаетсятиптриггера:

AFTER – выполняется после выполнения действия;

INSTEAD OF – выполняется вместо действия.

После типа триггера идет указание операции, для которой опреде-

ляетсятриггер: INSERT, UPDATE или DELETE.

После слова AS идет набор выражений SQL, описывающих работу триггера, которые составляюттелотриггера [8].

Задание

1.Использовать базу данных «Нарушения ПДД» из лабораторной работы № 5.

2.Сформировать SQL запросы.

Запросы

1.Создайте таблицу (Logs), в которой будет содержаться следую- щая информация:

названиетаблицы, в которой были сделаны изменения;

тип изменения (UPDATE, INSERT, DELETE);

точное время, когда произошло изменение.

2.Создайте 3 триггера (INSERT, UPDATE, DELETE), которые запи- сываютинформацию втаблицу Logs втотмомент, когда проис- ходит какое-то изменение в таблице «Нарушения». Проверьте их работу.

3.Создайте 3 триггера (INSERT, UPDATE, DELETE), которые запи- сываютинформацию втаблицу Logs втотмомент, когда проис- ходит какое-то изменение в таблице «Штрафы». Проверьте их работу.

4.Создайтетриггер INSERT (BEFORE), который проверяетданные во время ввода новой строки втаблицу «Нарушения»:

автомобильный номер должен содержать определенное чис- ло символов;

дата оплаты нарушения не может быть раньше даты нару- шения;

форматдаты должен быть YYYY-MM-DD.

В каждом случае необходимо выводить соответствующее со- общение об ошибке.

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]