You are on page 1of 64

Міністерство освіти і науки України

Національний технічний університет України


"Київський політехнічний інститут імені Ігоря Сікорського"

Бази даних

Методичні вказівки
до виконання лабораторних робіт
для студентів спеціальності
"Телекомунікації та радіотехніка"

Затверджено Вченою радою ІТС

Київ
КПІ ім. Ігоря Сікорського
2019

1
Бази даних [Текст]: метод. вказівки до викон. лаборатор. робіт для
студентів спеціальності "Телекомунікації та радіотехніка" / Уклад.: Л.С. Глоба,
С.В. Суліма. – К.: КПІ ім. Ігоря Сікорського, 2019. – 57 с.

Гриф надано Методичною радою КПІ ім. Ігоря Сікорського


(Протокол № від )

Навчальне видання

Бази даних

Методичні вказівки
до виконання лабораторних робіт
для студентів спеціальності
"Телекомунікації та радіотехніка"

Укладачі: Глоба Лариса Сергіївна, докт. техн. наук


Суліма Світлана Валеріївна

Відповідальний
редактор: Л.С. Глоба, докт. техн. наук

Рецензенти: Г.М. Жолткевич, д-р техн. наук, проф.


В.О. Шонін, канд. техн. наук, доц.

За редакцією укладачів
Надруковано з оригінал-макета замовника
Темплан 2008 р., поз. 2-022

Підп. до друку . Формат 60x84. Папір фос. Гарнітура Times.


Спосіб друку – ризографія. Ум. друк. арк.. 3

2
Зміст
Загальні методичні вказівки.........................................................................................................5
Вимоги до оформлення звіту з лабораторної роботи.................................................................6
Підготовка до виконання лабораторних робіт. Встановлення програмного забезпечення
MySQL............................................................................................................................................7
Лабораторна робота №1 Створення бази даних у MySQL Workbench..................................11
Лабораторна робота № 2 Створення запитів і модифікація таблиць бази даних у
MySQLWorkbench.......................................................................................................................26
Лабораторна робота №3 Використання транзакцій у MySQL Workbench............................42
Лабораторна робота №4 Робота з тригерами в MySQL...........................................................51
Додаток А Перелік предметних областей.................................................................................62

3
Вступ

Сучасні вимоги до інженерів з телекомунікацій ґрунтуються на глибоких


науково-технічних знаннях та вміннях розв’язувати практичні задачі, в тому
числі задачі щодо створення та роботи з базами даних, а саме підходів до
розробки схем баз даних, створення таблиць, роботи з засобами занесення та
отримання знань.
Метою методичних вказівок є надання допомоги студентам в отриманні
практичних навичок роботи з системами керування базами даних. Виконання
лабораторних робіт забезпечить закріплення теоретичного та лекційного
матеріалу.
Під час виконання лабораторних робіт студенти отримають навички
щодо:
 підходів до проектування баз даних;
 створення таблиць та організації взаємозв’язку між таблицями;
 створення запитів на отримання даних з таблиць;
 створення транзакцій та тригерів.

4
ЗАГАЛЬНІ МЕТОДИЧНІ ВКАЗІВКИ

1. У кожній лабораторній роботі визначено: мету роботи, рекомендації з


підготовки до роботи, програму і порядок її виконання.
2. Напередодні кожної лабораторної роботи необхідно:
- вивчити теоретичний матеріал зазначений у розділі "Підготовка до
лабораторної роботи";
- усвідомити мету, зміст і порядок виконання;
- у лабораторії перевірити наявне лабораторне устаткування.
3. До виконання лабораторної роботи допускаються тільки підготовлені
студенти після тестування (усного чи письмового), що проводиться викладачем
перед початком виконання роботи.
Лабораторні роботи виконуються самостійно кожним студентом.
Звіт з роботи акуратно оформлюється і подається під час захисту
лабораторної роботи. Схеми, зображені в звіті, мають відповідати вимогам
стандартів.
4. Студенти, відсутні на заняттях, виконують роботу у час, погоджений з
викладачем і інженером лабораторії після тестування.
5. Перед початком робіт кожному студенту необхідно вивчити правила
техніки безпеки, здати залік, за що розписатися в журналі.

5
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ З ЛАБОРАТОРНОЇ РОБОТИ

Звіт оформлюється на аркушах формату А4 і повинен містити:


1. титульну сторінку з номером та назвою лабораторної роботи,
прізвищем студента, номером групи та номером варіанта.
2. особливості завдання згідно варіанта роботи;
3. програмний код виконаного завдання;
4. скріншоти виконання програми, які підтверджують успішне
виконання програми;
5. висновки по роботі.

6
ПІДГОТОВКА ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ.
ВСТАНОВЛЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ MYSQL

Теоретичні відомості:

MySQL — вільна система керування реляційними базами даних.

MySQL був розроблений компанією <ТсХ> для підвищення швидкодії


обробки великих баз даних. Ця система керування базами даних (СКБД) з
відкритим кодом була створена як альтернативна комерційним системам.
MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все
розширювалася і зараз MySQL – одна з найпоширеніших систем керування
базами даних. Вона використовується, в першу чергу, для створення
динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних
мов програмування.

Для виконання лабораторних робіт завантажуємо додаток MySQL Server


5.7, також завантажуємо MySQL Workbench – це програма для доступу до
бази даних. Це середовище має графічний інтерфейс, покращує сприйняття,
також програма генерує код, завдяки цьому можна краще ознайомитися з
синтаксом MySQL.
SQL запити можна виконувати в середовищі MySQL Workbench, а
також MySQL 5.7 Command Line Client. У ході виконання циклу лабораторних
робіт будемо використовувати обидва способи.
Дане програмне забезпечення знаходиться у вільному доступі.
Завантажити можна за посиланням:
https://dev.mysql.com/downloads/mysql/5.7.html#downloads

7
Послідовність дій при завантаженні:

8
Після завантаження відкриваємо файл, та інсталюємо тільки ті програми
які нам необхідні:
-- MySQL Server
-- MySQL Workbench
-- Samples and Examples
9
--MySQL Documentation
УВАГА!!! На початку інсталяції обов’язково потрібно дати дозвіл на
оновлення, інакше сервер не буде працювати.

10
Після інсталяції вигадайте пароль, всі налаштування залишите за
замовчуванням. Виконавши перелічені вище дії, ви готові до виконання
лабораторних робіт.

11
ЛАБОРАТОРНА РОБОТА №1
СТВОРЕННЯ БАЗИ ДАНИХ У MYSQL WORKBENCH

Мета: отримати практичні навички проектування бази даних у MySQL


Workbench. Знайомстово з синтаксом MySQL.
I.Теоретичний матеріал:
Відношення - це плоска таблиця, що складається із стовпців і рядків.
Атрибут - це поіменований стовпець відношення.
Домен - це набір допустимих значень для одного або декількох
атрибутів.
Кортеж - це рядок відносини. Кортежі називаються розширенням
(extension), станом (state) або тілом відношення, яке постійно змінюється.
Кардинальність - це кількість кортежів, яке містить відношення.
Ця характеристика змінюється при кожному додаванні або видаленні кортежів.
Кардинальність є властивістю тіла відношення і визначається поточним станом
відношення в довільно взятий момент.
Реляційна база даних - це набір нормалізованих відношень.
Реляційна база даних складається з відношень, структура яких визначається за
допомогою особливих методів, званих нормалізацією (додатково читайте
літературу).

Термінологія, використовувана в реляційної моделі, часом може


призвести до плутанини, оскільки крім запропонованих двох наборів термінів
існує ще один - третій. Відношення в ньому називається файлом, кортежі -
записами, а атрибути - полями.
Відношення має такі характеристики:
• Відношення має ім'я, яке відрізняється від імен всіх інших
відношень.
• Кожна комірка відношення містить тільки атомарне (неподільне)
значення.
• Кожен атрибут має унікальне ім'я.
12
• Значення атрибуту беруться з одного і того ж домена.
• Порядок слідування атрибутів не має ніякого значення.
• Кожен кортеж є унікальним, тобто дублікатів кортежів бути не
може.
• Теоретично порядок слідування кортежів у відношенні не має
ніякого значення. (Проте, практично цей порядок може істотно вплинути на
ефективність доступу до них).

Реляційні ключі

Суперключ (superkey) - атрибут або множина атрибутів, яка єдиним


чином ідентифікує кортеж даного відношення.

Потенційний ключ - це суперключ, який не містить підмножини, що


також є суперключом даного відношення.

Первинний ключ - це потенційний ключ, який обраний для унікальної


ідентифікації кортежів всередині відносини.

Зовнішній ключ - це атрибут або множина атрибутів всередині


відношення, яка відповідає потенційному ключу деякого (можливо, того ж
самого) відношення.

Початок роботи в MySQL Workbench

Створення нової бази даних.


Перед початком роботи необхідно створити нову БД.
У даному середовищі є два способи створення БД. Для створення нової
бази даних необхідно клацнути кнопку (Рис. 1.1. п.1) або ж скористатися
другим способом (Рис. 1.1. п.2) клацнути на Schemas, на вільному місці
клацнути правою кнопкою миші та натиснути Create Shema.

13
Рис. 1. 1. Створення нової БД
Вказуємо назву БД <Shop> (Рис. 1.2. п.1). Задаємо формат зберігання як
зображено на (Рис. 1.2. п.2). Натискаємо на клавішу <застосувати> (Рис. 2. п.3) .

14
Рис. 1.2. Назва БД та формат зберігання
Створюємо відношення як показано на (Рис. 1.3.)

Рис. 1.3. Створення відношення


Вказуємо назву відношення (Рис. 1.4. п.1). Задаємо атрибути з
відповідним типом даних, встановлюємо ключ (Рис. 1.4. п.2).
Натискаємо застосувати (Рис. 1.4. п.3)

Рис. 1.4 Категорії

15
Аналогічні дії виконуємо створюючи ще три відношення (Рис. 1.5, Рис.
1.6, Рис. 1.7)

Рис. 1.5

Рис. 1.6 Тип продукту

16
Рис. 1.7 Товари
Головним відношення у нашій базі даних є <Товари>. Тому потрібно
проставити зв’язки для цілісності даних які будемо вводити. Відкриваємо
відношення для редагування, натискаємо на
Реалізація зв’язку багато-до-багатьох
Взаємовідносини сутностей виражаються зв'язками.
Класи зв'язків (relationship classes) - це взаємовідносини між класами
сутностей.
Примірники зв'язку (relationship instances) - взаємини між
екземплярами сутностей
Ступінь зв'язку (relationship degree) - число класів сутностей, що
беруть участь в зв'язку.

Три типи бінарних зв'язків

17
Позначення засобами в UML- діаграмах:

Зв'язок 1: 1 ( «один до одного») позначається -

Зв'язок 1: N ( «один до N» або «один до багатьох») -

Зв'язок N: M (читається «N до М» або «багато до багатьох») -

Зв'язок володіння в узагальненому вигляді, коли невідомий конкретний

тип зв'язку -

Числа всередині ромба, який символізує зв'язок, позначають аксимальну


кількість сутностей на кожній стороні зв'язку. Ці обмеження називаються
максимальними кардинальними числами, а сукупність з двох таких
обмежень для обох сторін зв'язку називається максимальною кардинальністю
(maximum cardinality) зв'язку.

 Зв’язок "один-до-багатьох"

Давайте скористаємося базою даних відстеження замовлень, до якої


входять таблиця ''Клієнти'' й таблиця ''Замовлення''. Клієнт може розмістити
будь-яку кількість замовлень. Таким чином, для будь-якого клієнта,
представленого в таблиці ''Клієнти'', у таблиці ''Замовлення'' може міститися
багато замовлень. Взаємозв’язок між таблицями ''Клієнти'' та ''Замовлення'' –
це зв’язок ''один-до-багатьох''.

Щоб представити зв’язок ''один-до-багатьох'' у структурі власної бази


даних, візьміть первинний ключ на стороні зв’язку ''один'' і вставте його як
додаткове поле або поля в таблицю на стороні зв’язку ''багато''. У цьому разі,
наприклад, нове поле – поле ідентифікатора з таблиці ''Клієнти'' – потрібно

18
додати до таблиці ''Замовлення'' та назвати його ''Код користувача''. Потім
програма Access зможе використати номер із поля ''Код користувача'' в таблиці
''Замовлення'' для пошуку користувачів, які відповідають певним замовленням.

 Зв’язок "багато-до-багатьох"

Тепер давайте розглянемо зв’язок між таблицями ''Товари'' та


''Замовлення''. В одному замовленні може бути вказано кілька товарів. З іншого
боку, один товар може зустрічатися в багатьох замовленнях.

Таким чином, кожному запису в таблиці ''Замовлення'' може відповідати


багато записів у таблиці ''Товари''. Крім того, кожному запису в таблиці
''Товари'' також може відповідати багато записів у таблиці ''Замовлення''. Такий
тип зв’язку називається зв’язком ''багато-до-багатьох''. Зверніть увагу, що для
виявлення наявних зв’язків ''багато-до-багатьох'' між таблицями важливо
розглянути обидва кінці зв’язку.

Для представлення зв’язку "багато-до-багатьох" потрібно створити третю


таблицю, яку часто називають розподільною, щоб розділити зв’язок "багато-до-
багатьох" на два зв’язки "один-до-багатьох". Первинний ключ із кожної із двох
таблиць потрібно вставити у третю таблицю. Унаслідок цього у третій таблиці
буде записано всі випадки або екземпляри зв’язків. Наприклад, таблиці
"Замовлення" та "Товари" пов’язані зв’язком "багато-до-багатьох", який
визначатиметься через створення двох зв’язків "один-до-багатьох" із таблицею
"Відомості про замовлення". В одному замовленні може зустрічатися багато
товарів, і кожний товар може зустрічатися в багатьох замовленнях.

19
 Зв’язок "один-до-одного"

У зв’язку ''один-до-одного'' кожному запису в першій таблиці може


відповідати лише один запис у другій таблиці, а кожному запису у другій
таблиці може відповідати лише один запис у першій таблиці. Цей зв’язок не
дуже поширений, оскільки зазвичай відомості, пов’язані між собою в такий
спосіб, зберігаються в одній таблиці. Зв’язок ''один-до-одного'' можна
використовувати для розділення таблиці з великою кількістю полів, для
відокремлення частини таблиці з міркувань безпеки або для зберігання даних,
які застосовуються лише до підмножини головної таблиці. У разі визначення
такого зв’язку в обох таблицях мають бути спільні поля.

Прикладом можуть слугувати таблиці "Людина" та "Засоби гігієни", коли


кожній люди відповідають свої засоби гігієни (мило, зубна щітка, тощо).

Реалізація зв’язків
Foreign keys (Рис. 1.8. п.1). Даємо назву сценарію і вказуємо зв’язок з
необхідним відношенням (Рис. 1.8. п.2 ). Вказуємо зв’язки між атрибутами
відношень (Рис. 1.8. п.3 ). Обов’язково вказуємо каскадне видалення (Рис. 1.8.
п.4 ).

20
Рис. 1.8 Зв’язок з відношенням Бренди
Аналогічні дії виконуємо для інших відношень (Рис. 1.9, Рис. 1.10)

Рис. 1.9 Зв’язок з відношенням Категорії

21
Рис. 1.10 Зв’язок з відношенням Тип товару

Для розуміння звязків згенеруємо схему (Рис. 1.11)

Рис. 1.11 Генерування схеми


Для наповнення відношень даних виконайте (Рис. 1.12)

22
Рис. 1.12 Наповнення даними

Далі наведено приклад наповнення даними:

23
24
Рис. 1.13 Результат виконаної роботи

II. Хід роботи:


1. Перевірте наявне лабораторне устаткування.
2. Виконайте завдання на лабораторну роботу.
3. Підготуйтеся до відповідей на контрольні питання.
III. Лабораторне устаткування:
Апаратне забезпечення:
Персональний комп’ютер.
Програмне забезпечення:
-- ОС Wіndows;
-- MySQL Server;
-- MySQL Workbench;
-- Samples and Examples;
--MySQL Documentation.

IV. Завдання на лабораторну роботу:


1. Розробіть базу даних згідно варіанта у відповідності з додатком А.:

25
2. Для кожного варіанту реалізуйте не менше 5 відношень по не менше 4
атрибутів у кожному.
3. Кожне відношення має мати третю нормальну форму.
4. Описати (письмово) кожне відношення та зв’язки між ними.
5. Наповнити відношення даними.
6. Згенерувати схему.

V. Контрольні питання:
1. Визначте терміни сутність, атрибут, зв'язок.
2. Опишіть структуру реляційних даних.
3. Дайте визначення основним термінам: відношення, атрибут, домен,
кортеж, степінь відношення і кардинальність. Наведіть приклади.
4. Наведіть класифікацію реляційних ключів і дайте відповідні
визначення. Поясніть суть на прикладах.
5. Дайте визначення зв'язку та наведіть приклад.
6. Перерахуйте три типи бінарних зв'язків та наведіть приклади.
Намалюйте ER-діаграму для кожного типу.
7. Наведіть приклад ER-діаграми для сутностей ФАКУЛЬТЕТ і ДОЦЕНТ,
що мають зв'язок 1: N. Зробіть припущення, що на факультеті може і не
бути доцентів, але кожен доцент повинен належати до якого-небудь
факультету.

26
ЛАБОРАТОРНА РОБОТА № 2
СТВОРЕННЯ ЗАПИТІВ І МОДИФІКАЦІЯ ТАБЛИЦЬ БАЗИ ДАНИХ У
MYSQLWORKBENCH

Мета: Використовуючи дані бази даних, підготовленої в попередній


лабораторній роботі, підготувати і реалізувати серію запитів, пов'язаних з
вибіркою інформації і модифікацією даних таблиць MySQLWorkbench.
I. Зміст роботи і методичні вказівки до її виконання:

1. Вивчити набір команд мови SQL, пов'язаний зі створенням запитів,


додаванням, модифікацією і видаленням рядків таблиці:
select - здійснення запиту по вибірці інформації з таблиць бази даних;
insert - додавання однієї або декількох рядків в таблицю;
delete - видалення однієї або декількох рядків з таблиці;
update - модифікація однієї або декількох рядків таблиці;
union - об'єднання запитів в один запит.
2. Вивчити склад, правила і порядок використання ключових фраз
оператора select:
select - опис складу даних, які слід вибрати за запитом (обов'язкова
фраза);
from - опис таблиць, з яких слід вибирати дані (обов'язкова фраза);
where - опис умов пошуку і з'єднання даних при запиті;
group by - створення одного рядка результату для кожної групи (групою
називається безліч рядків, що мають однакові значення в зазначених стовпцях);
having - накладення одного або більше умов на групу;
order by - сортування результату виконання запиту по одному або
кількох стовпців;
into outfile - створення файлу, в який буде здійснено виведення
результатів відповідного запиту.

27
Порядок проходження фраз в команді select повинен відповідати
наведеній вище послідовності. Для кращого розуміння механізму
функціонування виконайте наступні вправи:
ІI. Прості запити на мові SQL
Запит на мові SQL формується з використанням оператора Select.
Оператор Select використовується
• для вибірки даних з бази даних;
• для отримання нових рядків у складі оператора Insert;
• для оновлення інформації в складі оператора Update.
У загальному випадку оператор Select містить наступні сім
специфікаторів, розташованих в операторі в наступному порядку:
• специфікатор Select;
• специфікатор From;
• специфікатор Where;
• специфікатор Group by;
• специфікатор Having;
• специфікатор Order by;
Обов'язковими є тільки специфікатор Select і From. Ці два специфікатори
складають основу кожного запиту до бази даних, оскільки вони визначають
таблиці, з яких вибираються дані, і стовпці, які потрібно вибрати.
Специфікатор Where додається для вибірки певних рядків або вказівки
умови з'єднання. Специфікатор Order by додається для зміни порядку
одержуваних даних. Специфікатор Into temp додається для збереження цих
результатів у вигляді таблиці з метою виконання наступних запитів. Два
додаткових специфікатор оператора Select - Group by (специфікатор
групування) і Having (специфікатор умови вибірки групи) - дозволяють
виконувати більш складні вибірки даних.
Приклади
1. Вибір всіх рядків і стовпців таблиці.

Приклад.
28
Видати повну інформацію про бренди.

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди USE «назва_бази_даних» (1).
Обираємо всі дані з таблиці за допомогою команди
SELECT * FROM «назва_таблиці»; (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: Таблиця brand в повному обсязі (Рис 2.1.).

Рисунок 2.1
2. Зміна порядку відображення стовпців.

Приклад.

29
Отримати таблицю category в наступному порядку: name, alias_name,
discount, id.

Вказуємо з якою базою даних ми будемо працювати, за допомогою


команди:
USE «назва_бази_даних» (1).
Обираємо які дані та з якою послідовністю вони будуть відображатись, за
допомогою команди:
SELECT «стовпець_1», «стовпець_2», … «стовпець_n» FROM
«назва_таблиці»; (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: таблиця category в необхідному порядку (Рис 2.2).

30
Рисунок 2.2
3. Вибір заданих стовпців.

Приклад.
Отримати всі назви одягу з таблиці category.

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди:
USE «назва_бази_даних» (1).
Обираємо який стовпець (стовпці) потрібно вивести, за допомогою
команди:
SELECT «назва_стовпця» FROM «назва_таблиці» (2).

31
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category (Рис 2.3)

Рисунок 2.3
4. Вибір даних без повторення.

Приклад.
Видати назви всього одягу з таблиці category, виключаючи дублювання.

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди:
USE «назва_бази_даних» (1).
Обираємо який стовпець (стовпці) з даними без дублювання потрібно
вивести, за допомогою команди:
32
SELECT DISTINCT «назва_стовпця» FROM «назва_таблиці» (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category без дубльованих даних (Рис
2.4).

Рисунок 2.4
5. Використання в запитах констант і виразів.

Приклад.
Показати значення на які множиться ціна при знижці.

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди:

33
USE «назва_бази_даних» (1).
Обираємо для якого стовпця буде виконаний потрібний вираз, за
допомогою команди:
SELECT «назва_стовпця», “Назва_виразу”,
«назва_стовпця_над_яким_виконується_дія»«символ_дії»«константа»
FROM «назва_таблиці» (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category, стовпець Відносне значення
(множник ціни), стовпець зі зміненими даними відповідно до виразу
discount/100 (Рис 2.5).

Рисунок 2.5
6. Обмеження у вибірці.

Приклад.
Видати назви чоловічого одягу, які мають знижку ≥ 15%.

34
Вказуємо з якою базою даних ми будемо працювати за допомогою
команди:
USE «назва_бази_даних» (1).
Обираємо для якого стовпця будуть виконуватись наступні умови, за
допомогою команди:
SELECT «назва_стовпця» FROM «назва_таблиці» WHERE
«назва_стовпця»«дія»«значення» (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category, наповнений даними які
задовольняють задані умови (Рис 2.6).

Рисунок 2.6
7. Вибірка з упорядкуванням.

35
Приклад.
Видати id товару чоловічого взуття в порядку спадання знижки.

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди:
USE «назва_бази_даних» (1).
Обираємо стовпці які ми будемо виводити та накладаємо умови, за
допомогою команди:
SELECT «назва_стовпця» FROM «назва_таблиці» WHERE
«назва_стовпця»=“дані” ORDER BY «назва_стоппця» DESC (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпці id, discount з даними чоловічого взуття які
відображаються у порядку спадання (Рис 2.7).

36
Рисунок 2.7
8. Команда in (not in).

Приклад.
Видати назви одягу знижка яких дорівнює 5% або 15%;

Вказуємо з якою базою даних ми будемо працювати за допомогою


команди:
USE «назва_бази_даних» (1).
Обираємо стовпці які ми будемо виводити та накладаємо умови, за
допомогою команди:
SELECT «назва_стовпця» FROM «назва_таблиці» WHERE
«назва_стовпця» IN («дані») (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
37
Результат: стовпці id, name, discount з знижками 5% або 15% (Рис 2.8).

Рисунок 2.8
9. Вибір за шаблоном.
Для запитів з пошуком за шаблоном, основаних на пошуку підрядків в
полях типу CHARACTER, використовуються ключове слова LIKE.
Включення в вираз ключового слова NOT породжує умова c зворотним сенсом.
Ключове слово LIKE відповідає стандарту ANSI.
Символ Значення
LIKE
% Замінює послідовність символів
- Замінює будь-який одиночний символ
\ Скасовує спеціальне призначення наступного символу

Приклад.
Вибрати список брендів речей, які починаються на букву “C”.

38
Результат (рис 2.9):

Рисунок 2.9

II. Використання функцій


Агрегатні функції
Приклади.
a) Видати загальну кількість брендів. (Рис 2.10)

39
Рисунок 2.10
б) Видати середню ціну усіх товарів.(Рис 2.11)

Рисунок 2.11
в) Видати мінімальну та максимальну ціну товарів. (Рис 2.12)

40
Рисунок 2.12
г) За замовчуванням всі вище перелічені три функції враховують всі
рядки вибірки для обчислення результату. Але вибірка може містити
повторювані значення. Якщо необхідно виконати обчислення тільки над
унікальними значеннями, виключивши з набору значень повторювані дані, то
для цього застосовується оператор DISTINCT. За замовчуванням замість
DISTINCT застосовується оператор ALL, який вибирає всі рядки.
Приклад.
Видати кількість типів продукту. (Рис 2.13)

Рисунок 2.13

41
В даному випадку ми бачимо, що типи можуть повторюватися в таблиці,
так як деякі товари можуть мати однакові типи. Тому щоб підрахувати кількість
унікальних типів, необхідно використовувати оператор DISTINCT.
Завдання:
1. Написати запит на операцію вибірки.
2. Написати запит на операцію проекції.
3. Підготувати і виконати засобами СУБД MySQL запит по вибірці
інформації з таблиць бази даних з використанням агрегатної функцій.
4. Написати 3 багатотабличних запити, у тому числі з використанням
зовнішнього з’єднання.
5. Написати запит на одну з операцій: об’єднання, перетину або
різниці.
6. Підготувати і виконати засобами СУБД MySQL 3 запити по
модифікації інформації (вставка, видалення, заміщення) з таблиць бази даних.
7. Написати запит з підзапитом.

Контрольні питання
1. Що таке корельований запит? Чим відрізняється корельований запит
від некорельованого?
2. Які існують обмеження на формування корельованого запиту?
3. Яким чином зберегти результати запиту в таблиці?
4. Якими засобами SQL реалізуються такі операції реляційної алгебри:
обмеження, декартовій добуток, проекція, перетин, об'єднання, різниця,
з'єднання?
5. Що таке зовнішнє з'єднання?
6. У яких випадках замість фрази IN можна використовувати операцію
порівняння?
7. Які існують засоби групування в SQL? Як вони використовуються?

42
ЛАБОРАТОРНА РОБОТА №3
ВИКОРИСТАННЯ ТРАНЗАКЦІЙ У MYSQL WORKBENCH

Мета: отримати практичні навички використання транзакцій в базах даних у


MySQL Workbench.

I.Теоретичний матеріал:

Транза́ кція (англ. transaction) — група послідовних операцій з базою


даних, яка є логічною одиницею роботи з даними. Транзакція може бути
виконана або цілком і успішно, дотримуючись цілісності даних і незалежно від
інших транзакцій, що йдуть паралельно, або не виконана зовсім, і тоді вона не
може справити ніякого ефекту. Транзакції оброблюються транзакційними
системами, в процесі роботи яких створюється історія транзакцій.

Транзакції з базою даних використовуються для досягнення наступних


цілей:

1. Забезпечення надійних робочих елементів, які дозволяють


правильно відновити роботу у випадку збоїв та зберігати цілісність бази даних
у випадку системних відмов, коли виконання операцій зупиняється (повністю
або частково) і більшість операцій над базою даних залишаються
незавершеними з нез'ясованим статусом.
2. Для забезпечення роздільного доступу для процесів, що одночасно
звертаються до бази даних. При відсутності ізоляції операцій, результати
отримані процесами можуть бути помилковими.

Властивості транзакцій:
Одним з найбільш розповсюджених наборів вимог до транзакцій і
транзакційних систем є набір ACID (англ. Atomicity, Consistency, Isolation,
Durability). Вимоги ACID були в головному сформульовані наприкінці 70-х

43
років Джимом Ґреєм. Разом з тим, існують спеціалізовані системи з
ослабленими транзакційними властивостями.

Atomicity — Атомарність

Атомарність гарантує, що ніяка транзакція не буде зафіксована в системі


частково. Будуть або виконані всі її складові операції, або не виконано жодної.
Оскільки на практиці неможливо одночасно і атомарно виконати всю
послідовність операцій усередині транзакції, вводиться поняття «відкіт»
(англ. rollback): якщо транзакцію не вдається повністю завершити, результати
всіх її до сих пір виконаних дій будуть відмінені, і система повернеться до
стану на початок транзакції.

Consistency — Узгодженість

Одна з найскладніших і неоднозначних властивостей з четвірки ACID. У


відповідності до цієї вимоги, система знаходиться в узгодженому стані до
початку транзакції і повинна залишитись в узгодженому стані після завершення
транзакції. Не можна плутати вимогу узгодженості з вимогами цілісності
(англ. integrity). Останні правила є більш вузькими і, багато в чому, специфічні
для реляційних СКБД: є вимоги цілісності типів (англ. domain integrity),
цілісності посилань (англ. referential integrity), цілісності сутностей (англ. entity
integrity), які не можуть бути порушені фізично в силу особливостей реалізації
системи.

Узгодженість є більш широким поняттям. Наприклад, в банківській


системі може існувати вимога рівності суми, що списується з одного рахунка,
сумі, що зачислюється на інший. Це бізнес-правило і воно не може бути
гарантовано тільки перевірками цілісності, його повинні дотриматись
програмісти при написанні коду транзакцій. Якщо будь-яка транзакція виконає
списання, але не виконає зачислення, то система залишиться в некоректному
стані і властивість узгодженості буде порушена.

Нарешті, ще одне зауваження стосується того, що під час виконання


транзакції узгодженість не потребується. В нашому прикладі, списання і
44
зачислення будуть, скоріш за все, двома різними підопераціями и між їх
виконанням всередині транзакції буде видно неузгоджений стан системи.
Однак не треба забувати, що при виконанні вимоги ізоляції, жодним іншим
транзакціям ця неузгодженість не буде видна. А атомарність гарантує, що
транзакція або буде повністю завершена, або жодна з операцій транзакції не
буде виконана. Тим самим ця проміжна неузгодженість є прихованою.

Isolation — Ізольованість

Під час виконання певної транзакції, транзакції, які відбуваються


паралельно, не повинні впливати на її результат. Ця властивість не
дотримується на рівні ізольованості Repeatable Read та нижче.

Durability — Надійність

Незалежно від проблем на нижніх рівнях (наприклад, при знеструмленні


системи чи збоях в обладнанні), зміни, зроблені транзакцією, яка успішно
завершена, повинні залишитись збереженими після повернення системи до
роботи. Іншими словами, якщо користувач отримав підтвердження від системи,
що транзакція виконана, він може бути впевнений, що зміни, які він зробив, не
будуть відмінені через будь-який збій.
Рівні ізоляції транзакції:
В ідеалі транзакції різних користувачів повинні виконуватись так, щоб
створювалась ілюзія, що користувач поточної транзакції — єдиний. Однак в
реальності, з міркувань продуктивності і для виконания деяких спеціальних
задач, СКБД забезпечують певні рівні ізоляції транзакцій.

Рівні є описаними в порядку збільшення ізольованості транзакцій і,


відповідно, надійності роботи з даними.

 0— Читання непідтверджених даних (брудне читання) (Read


Uncommitted, Dirty Read) — читання незафіксованих змін як своєї транзакції,
так і паралельних транзакцій. Немає гарантії, що дані, змінені іншими
транзакціями, не будуть в будь-який момент змінені в результаті їх відката,

45
тому таке читання є потенційним джерелом помилок. Неможливими є втрачені
зміни (lost changes), можливими є неповторювані читання і фантоми.
 1 — Читання підтверджених даних (Read Committed) — читання всіх
змін своєї транзакції і зафіксованих змін паралельних транзакцій. Втрачені
зміни и брудне читання не дозволяються, можливими є неповторюване читання
і фантоми.
 2 — Повторюване читання (Repeatable Read, Snapshot) — читання всіх
змін своєї транзакції, будь-які зміни, внесені паралельними транзакціями після
початку своєї, є недоступними. Втрачені зміни, брудне і неповторюване
читання не є можливими; можливі фантоми.
 3— Впорядкований — (Serializable) — впорядковані транзакції.
Результат паралельного виконання впорядкованої транзакції з іншими
транзакціями повинен бути логічно еквівалентний результату їх будь-якого
послідовного виконання. Проблеми синхронізації не виникають.

Чим вище рівень ізоляції, тим більше потребується ресурсів, щоб його
забезпечити. Відповідно, підвищення ізольованості може приводити до
зниження швидкості виконання паралельних транзакцій, що є «платою» за
підвищення надійності.

В СКБД рівень ізоляції транзакцій можна вибрати як для всіх транзакцій


разом, так і для одної конкретної транзакції. За умовчанням в більшості баз
даних використовується рівень 1 (Read Committed). Рівень 0 використовується в
основному для відстеження змін тривалих транзакцій або для читання даних,
що рідко змінюються. Рівні 2 и 3 використовуються при підвищених вимогах
до ізольованості транзакцій.

Управління транзакціями
Для управління транзакціями використовуються наступні команди:
 COMMIT - зберегти зміни.
 ROLLBACK - скасувати зміни.

46
 SAVEPOINT - створює точки збереження в групах транзакцій.
 SET TRANSACTION - поміщає ім'я в транзакцію.

Команди управління транзакціями


Команди управління транзакціями використовуються тільки з командами
DML, такими як - INSERT, UPDATE і DELETE. Вони не можуть
використовуватися при створенні таблиць або їх видаленні, оскільки ці операції
автоматично фіксуються в базі даних.

ІІ. Практичний матеріал


1. Команда COMMIT

Команда COMMIT – це команда транзакції, яка використовується для


збереження змін внесених транзакцією в базу даних. Команда COMMIT
зберігає всі транзакції в базі даних з моменту виконання останньої команди
COMMIT або ROLLBACK.
1) Вивід значення таблиці «category»:

2) Видалити з таблиці «category» рядок з id=1:

47
Команда DELETE видаляє рядок №1 в таблиці, а команда COMMIT
зберігає зміни в таблиці.
3) Оновити значення «discount» для рядка з id=3 на «дане значення» +
«половина даного значення»:

2. Команда ROLLBACK

Команда ROLLBACK - це транзакційна команда, яка використовується


для скасування транзакцій, які ще не були збережені в базі даних. Ця команда
може використовуватися тільки для скасування транзакцій з моменту
виконання останньої команди COMMIT або ROLLBACK.

48
1) Повинно було встановитись в id=2 в «discount» значення 20, але
була використана команда ROLLBACK яка відмінила виконання
транзакції.

3. Команда SAVEPOINT

SAVEPOINT (точка збереження) - це спеціальна позначка в транзакції,


яка дозволяє відкотити всs команди, виконані після неї, і відновити таким
чином стан на момент установки цієї точки.

1) Створюємо 1 точку збереження «point0» не змінивши таблицю;


2) Змінюємо значення стовпця «discount» на значення 10 в таблиці
«category»;
3) Створюємо 2 точку збереження «point1»;
4) Видаляємо рядок з id=2 в таблиці «category»;
5) Створюємо 2 точку збереження «point1»;
6) Виконуємо транзакцію і повертаємося до 1 точки збереження
«point0»;

49
7) Виконуємо транзакцію і повертаємося до 2 точки збереження «point1»;

8) Виконуємо транзакцію і повертаємося до 3 точки збереження «point2».

50
Завдання
1. Виконати транзакцію над довільною таблицею. Видалити кортежі,
певний числовий параметр якої якого 10 і відразу зберегти дані.
2. Виконати транзакцію над довільною таблицею. Видаліть рядки з
id=2;3;6, створюючи точки збереження перед кожним видаленням. Перевірте
точки збереження.
3. Виконати транзакцію над довільною таблицею. Змініть числовий
параметр в одному з атрибутів з довільним id на +300 і -250 для іншого id.
4. Виконати транзакцію над довільною таблицею, в якій додається
новий атрибут з значенням 3000 для парних і 2000 для непарних значень
певного атрибуту.

Контрольні запитання
1. Що таке транзакція? Для чого її використовують?
2. Що свідчить про закінчення транзакції?
3. Назвіть основні властивості транзакцій і що вони собою являють.
4. Які переваги і недоліки використання транзакцій?
5. Для чого використовують команди COMMIT, ROLLBACK,
SAVEPOINT, SET TRANSACTION.
6. Поясніть як вирішується проблема паралельних транзакцій.

51
ЛАБОРАТОРНА РОБОТА №4
РОБОТА З ТРИГЕРАМИ В MYSQL

Мета: Створення і використання тригерів в середовищі MySQL


Workbench.

I.Теоретичний матеріал:

Збережені процедури, функції, тригери

Збережена процедура - це об'єкт бази даних, що представляє собою набір


SQL- інструкцій, який компілюється один раз і зберігається на сервері.

Збережена функція відрізняється від процедури, тим що функція завжди


повертає тільки скаляр, а процедура повертає набір значень.

Тригер - це об'єкт з іменованою базою даних, який пов'язаний з таблицею,


і він активується, коли для таблиці відбувається певна подія (наприклад,
вставка, оновлення або видалення). Оператор CREATE TRIGGER створює
новий тригер в MySQL.

Збережені процедури запускають у всіх середовищах, і немає


необхідності перестроювання логіки. З того моменту як ви створили збережену
процедуру, не важливо який додаток ви використовуєте для виклику
процедури. Також не важливо якою мовою ви програмуєте, логіка процедури
міститься на сервері БД.

Також збережені процедури можуть скоротити мережевий трафік.


Складні, повторювані завдання можна обробляти за допомогою процедур на
сервері баз даних, без необхідності відсилання проміжних результатів.

Тригери застосовуються для забезпечення цілісності даних і реалізації


складної бізнес-логіки. Тригер запускається сервером автоматично при спробі
зміни даних в таблиці, з якою він пов'язаний. Всі вироблені їм модифікації
52
даних розглядаються як виконувані в транзакції, в якій виконано дію, що
викликала спрацьовування тригера. Відповідно, в разі виявлення помилки або
порушення цілісності даних може статися відкат цієї транзакції.

Маємо наступний синтаксис:

CREATE TRIGGER trigger_name


trigger_time trigger_event
ON tbl_name
FOR EACH ROW
trigger_body
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }

trigger_name: Усі тригери повинні мати унікальні імена в межах схеми.


Тригери в різних схемах можуть мати однакову назву.

trigger_time: trigger_time - час дії тригера. Це може бути ПЕРЕД або


ПІСЛЯ, щоб вказати, що тригер активується до або після кожного рядка, який
потрібно змінити.

trigger_event: trigger_event вказує тип операції, яка активує тригер.


Наступні значення події дозволені:

 Тригер активується кожного разу, коли в таблицю вставляється новий


рядок; наприклад, за допомогою операторів INSERT і REPLACE.

 Тригер активується кожного разу, коли змінюється рядок; наприклад,


через оператори UPDATE.

53
 Тригер активується кожного разу, коли рядок видаляється з таблиці;
наприклад, за допомогою операторів DELETE і REPLACE. Оператор
TRUNCATE TABLE в таблиці не активує цей тригер, оскільки він не
використовує DELETE.

tbl_name: Тригер стає асоціюється з таблицею з ім'ям tbl_name. Не можна


пов’язати тригер з таблицею TEMPORARY (тимчасова таблиця без стовпців).
trigger_body: trigger_body - оператор, який виконується при активації
тригера. Щоб виконати кілька операторів, скористайтеся конструктором
складеного оператора BEGIN ... END.

Простий приклад:

CREATE TRIGGER sum_value


BEFORE INSERT ON rating
FOR EACH ROW
SET @sum = @sum + NEW.amount;

У наведеному вище прикладі є нове ключове слово "NEW", яке є


розширенням MySQL для тригерів. Це означає, що ви можете використовувати
тригер, щоб змінити значення, які потрібно вставити в новий рядок, або
використовувати для оновлення рядка.

Інший приклад:

Завдання. Потрібно після вставки (INSERT) рядки в таблицю clients,


оновити (UPDATE) таблицю actions внісши в неї значення id нового запису
таблиці clients.

CREATE TRIGGER ins_clients


AFTER INSERT ON clients
54
FOR EACH ROW
UPDATE actions SET client_id = NEW.id;

Імена тригерів існують в просторі імен схеми(бази даних). Це означає, що


всі тригери повинні мати унікальні імена всередині схеми. Тригери в різних
схемах можуть мати те ж саме ім'я.
На додаток до вимоги, щоб ім'я тригера було унікальним для схеми, є
інші обмеження на типи тригерів, які можна створювати. Ви не можете мати
два тригера для таблиці, які мають таку ж саму подію і час активації.
Наприклад, Ви не можете визначати два тригера типу BEFORE INSERT або
AFTER UPDATE для таблиці. Це рідко має бути значним обмеженням, оскільки
запросто можна визначити тригер, що виконує багато інструкцій з допомогою
конструкції BEGIN ... END після FOR EACH ROW.
Ключові слова OLD і NEW дають можливість Вам звернутися до стовпців
в рядках, на які впливає тригер OLD і NEW не чутливі до регістру. У тригері
INSERT може використовуватися тільки NEW.col_name: немає ніякої старої
рядки. У тригері DELETE не очікується ніякої нової рядки, так що може
використовуватися виключно OLD.col_name. У тригері UPDATE Ви можете
використовувати OLD.col_name, щоб звернутися до стовпців рядка перш, ніж
вони зміняться, і NEW.col_name, щоб звернутися до них вже після внесення
змін.

Переваги використання MySQL Triggers

Крім того, що використання тригерів не залежить від програми і мови


програмування, є ще ряд переваг:

 Скорочення мережевого трафіку


 Мінімізація використовуваних ресурсів
 Відсутність необхідності передачі проміжних результатів

55
 Забезпечення цілісності даних
 Тригер запускається автоматично
Всі виконані операції вважаються транзакціями, тому в разі помилки ви
легко можете відкотити ті чи інші зміни.

Перегляд і видалення тригерів

Щоб подивитися всі створені тригери, використовуйте команду:


SHOW TRIGGERS;
А щоб видалити тригер, використовуйте команду
DROP TRIGGER.
Наприклад:
DROP TRIGGER test;

Особливості використання тригерів

На що варто звернути увагу при використанні тригерів:

 Якщо ви видалите таблицю, до якої прив'язані тригери, то вони теж


будуть видалені
 Тригер запускається для кожного запису в таблиці. Якщо ваш запит
стосується, наприклад, 5 записів, то тригер буде запущений рівно 5 разів.
 Для створення тригера, ви повинні мати права SUPER

1. Процедура на шифрування паролів

В першому завданні необхідно застосувати триггер до створенної таблиці


“user_logins”, виконуючий шифрування паролів MD5 після вводу нового
користувача. Вам потрібно створити таблицю з необхідними стовпцями та
ввести декілька нових користувачів.

56
Вона має наступну структуру:

Значення Ім’я, пароль та логін можуть бути будь-які, зверніть увагу на


необов’язкові поля для заповнення. В кінцевому результаті заповнена таблиця
приймає наступний вигляд:

В результаті вставлений пароль має відображатися в зашифрованому, а не


в початковому вигляді. Наприклад в першому рядку таблиці значення `pass` при
операції вводу набувало значення “12345678”.

Сучасна криптографія включає в себе три напрямки: шифрування із


закритим ключем, шифрування з відкритим ключем і хешування. В цілому під
хешуванням розуміють перетворення вхідних даних довільної довжини в
вихідний бітовий рядок фіксованої довжини. Найчастіше хеш-функції
застосовують в процесі аутентифікації користувача (в базі даних зазвичай
зберігається хеш пароля замість самого пароля) і для обчислення контрольних
сум файлів, пакетів даних і т. д. Одним з найбільш відомих і широко
використовуваних алгоритмів хешування є MD5.
57
Використана хеш-функція призначена для згортки вхідного масиву будь-
якого розміру в бітовий рядок, для MD5 довжина вихідного рядка дорівнює 128
бітам.

Реальна цінність хешованих значень - це нечитабельні наповнювачі для


рядків, таких як паролі. Він не має особливого підвищення безпеки.
Припускаючи, що зловмисник отримав доступ до таблиці з хешованими
паролями, він може:
1) Хешувати пароль за власним вибором і розміщувати результати в
таблицю паролів, якщо у нього є права на запис / редагування в таблиці.
2) Генерувати хешовані значення загальних паролів і перевіряти
існування подібних хешованих значень в таблиці паролів.

Тобто паролі не можуть бути захищені тільки тим фактом, що вони


хешуються.

2.Перевірка на додавання нового запису до таблиці

Використовуючи великий масив даних буде важко перевіряти його на


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

В даному завданні необхідно створити триггер, який з кожним новим


записом до таблиці замовлень буде додавати нове значення до створеної
тимчасової таблиці (див. вище – TEMPORARY TABLE), означаючий
надходження нового замовлення – ‘added new order’. Тимчасова таблиця
створюється аналогічно до звичайної. Також тимчасова таблиця має містити
поле типу DATETIME, куди потрібно автоматично вписувати поточну дату та
час, при додаванні нового запису.
58
Таким же чином можна виконувати й інші операції, які потребують
зв’язку між двома таблицями.

Таблиця TEMPORARY відображається лише в поточному сеансі і


автоматично скидається при закритті сеансу. Це означає, що дві різні сесії
можуть використовувати одне і те ж ім'я тимчасової таблиці, не конфліктуючи
один з одним або з існуючою таблицею, яка не є тимчасовою.

Так, наприклад, доцільно використовувати тимчасові таблиці для


зберігання даних про відкриті якимось клієнтським додатком або процесом
файлах, про відкриті дочірні форми. Можна так само зберігати у тимчасових
таблицях дані матриць перетворень в складних математичних завданнях. В
загальному, тимчасові таблиці на відміну від таблиць регулярних доцільно
використовувати в тих випадках, коли зберігаються дані часто змінюються, і
непостійні.

Кінцевим результатом має бути наступна тимчасова таблиця:

3.Додавання значень 2-х полів у таблиці

59
У наведеному нижче прикладі перед тим, як вставити новий запис у
таблицю emp_details, перевірятиметься показник значення стовпців:

FIRST_NAME, LAST_NAME, JOB_ID

- Якщо до або після FIRST_NAME, LAST_NAME, TRIM () є будь-які пробіли,


їх буде вилучено.
- Значення JOB_ID буде перетворено у верхній регістр за допомогою функції
UPPER ().

CREATE TRIGGER emp_details


BEFORE INSERT
ON emp_details FOR EACH ROW
SET NEW.FIRST_NAME = TRIM(NEW.FIRST_NAME);
SET NEW.LAST_NAME = TRIM(NEW.LAST_NAME);
SET NEW.JOB_ID = UPPER(NEW.JOB_ID);

/* вставка елементів у таблицю*/

INSERT INTO emp_details VALUES (334, ' Ana ',


' King', ' it_prog', '17000.00', '0.50');

FIRST_NAME -> ` Ana ` змінено на `Ana`


LAST_NAME -> ` King ` змінився на `King`
60
JOB_ID -> ' it_prog' змінено на `IT_PROG`

В даному завданні необхідно додати нову колонку до раніше створенної


таблиці user_logins під назвою `full_name`. Далі необхідно створити триггер,
який при введенні нового значення (INSERT) до таблиці об'єднуючі дані полів
`soname` та `name` у спільне поле `full_name`. Такий самий триггер потрібно
створити і при оновленні (UPDATE) даних значень у таблиці.

На наступному зображенні показаний результат лише після операції


INSERT:

В кінці роботи ви маєте за допомогою запиту показати список


використаних тригерів у вашій БД.

II. Хід роботи:


1. Перевірте наявне лабораторне устаткування.
2. Виконайте завдання на лабораторну роботу.
3. Підготуйтеся до відповідей на контрольні питання.
61
III. Лабораторне устаткування:
Апаратне забезпечення:
Персональний комп’ютер.
Програмне забезпечення:
-- ОС Wіndows;
-- MySQL Server;
-- MySQL Workbench;
--MySQL Documentation.
IV. Завдання на лабораторну роботу:
1. Створити тригер який виконує шифрування паролів для нововведених
записів в таблиці user_logins. В якості записів для таблиці використовуйте
будь-які логіни та паролі.
2. Створити тригер, що додає нові значення у тимчасову таблицю
table_check одночасно з додаванням нового запису в певну таблицю.
3. Додати нову колонку full_name до таблиці user_logins.
a. Створити тригер для об’єднання нововведених значень soname і name в
полі full_name у таблиці user_logins.
b. Створити аналогічний тригер для оновлення даних soname і name.
c. Відобразити список всіх створених тригерів відповідним запитом.

V. Контрольні питання:
1. Що таке тригер, процедура та збережена функція, у чому їх
відмінності?
2. Назвіть основні запити створюють, видаляють тригер та показують
список наявних тригерів.
3. З якими правами користувач може створювати тригер в наявній БД?
4. За якими типами операцій активується тригер?
5. Які є переваги використання тригерів в базах даних?
6. Для чого застосовують хеш-функції?
7. Що таке тимчасова таблиця і які її відмінності від звичайної таблиці?

62
ДОДАТОК А
ПЕРЕЛІК ПРЕДМЕТНИХ ОБЛАСТЕЙ
1 Агентство з організації сімейних 45 Комп’ютерний клуб
свят 46 Ферма
2 Мобільний оператор 47 Поліклініка
3 Профілакторій 48 Спортивний клуб
4 Відділ кадрів підприємства 49 Готель
5 Гуртожиток 50 Космічне агентство
6 Консервний завод 51 Магазин товарів для рукоділля
7 Салон краси 52 Медпункт
8 Бібліотека 53 Кав’ярня
9 ЖКГ 54 Принт-центр
10 Зоомагазин 55 База відпочинку
11 Майстерня по ремонту взуття 56 Кондитерська фабрика
12 Залізничний вокзал 57 Молокозавод
13 М’ясокомбінат 58 Комісійний магазин
14 Санаторій 59 Торгово-розважальний комплекс
15 Майстерня по ремонту техніки 60 Будівельна фірма
16 Паб 61 Іподром
17 Поштамт 62 Аптека
18 Турагенство 63 Майстерня по ремонту годинників
19 Школа мистецтв 64 Фотосалон
20 Автовокзал 65 Метро
21 Пароплавство 66 Ресторан
22 Зоопарк 67 Весільне агентство
23 Пожежна станція 68 Музей
24 Кінотеатр 69 Спортзал
25 Мисливське угіддя 70 Казино
26 Інтернет-магазин 71 Книжковий магазин
27 Комерційний банк 72 Суд
28 Квітковий магазин 73 Танцювальна студія
29 Магазин одягу 74 Укртелеком
30 Ательє 75 Дискотечний клуб
31 Лікарня 76 Армія
32 Цирк 77 Театр опери та балету
33 Картинна галерея 78 Боулінг-клуб
34 Консерваторія 79 Автотранспортне підприємство
35 Видавництво 80 Дитячий садок
36 Заправна станція 81 Благодійна організація
37 Телеканал 82 Радіостанція
38 Адміністрація президента 83 Баскетбольний клуб
39 Завод 84 Ріелторське агентство
40 Театр 85 Інтернет провайдер
41 Школа 86 Приймальна комісія
42 Верховна Рада 87 Риболовство
43 Аквапарк 88 Газетний кіоск
44 Водне господарство 89 Лісництво
63
90 Прокат відеофільмів
91 Міліція
92 Столова
93 Банк
94 Міністерство освіти та науки
95 Гірськолижний курорт
96 Магазин промислових товарів
97 Футбольний клуб
98 Продовольчий магазин
99 Аукціонний дім
10 Відділ кадрів інституту
0

64

You might also like