
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ
МАШИНОБУДІВНИЙ КОЛЕДЖ СУМДУ
Обов’язкове домашнє завдання
З дисципліни
«Організація баз даних і знань»
Виконав студент групи 310
Бойко Є.А.
Варіант 3
Перевірив Дорошкова О.М.
Суми 2020
Обов’язкове індивідуальне завдання з дисципліни
«Організація баз даних»
Метою роботи є створення бази даних в запропонованій предметній галузі.
Робота в обов’язковому порядку має містити наступне:
Концептуальну модель, що складається мінімум з чотирьох таблиць;
Кожна з таблиць має містити первинні ключі в обов’язковому порядку, вторинні ключі – за необхідністю;
Дані таблиць повинні містити текстові та числові значення, нульові значення, а також датовані дані .
Необхідну кількість запитів, що задовольнять наступним вимогам. Результати подати у вигляді змісту запиту, синтаксису запиту та скрін-шоту результату виконання запиту з екрану.
чотири (або за необхідністю більше) простих запити на вибірку – для відображення повного вмісту таблиць;
п’ять простих запитів на вибірку з використанням логічних операторів AND, OR та NOT;
п’ять запитів на вибірку унікальних даних;
п’ять запитів на оновлення даних (збільшення та зменшення числових даних);
п’ять запитів на упорядкування результатів запиту;
п’ять запитів на вибірку мінімального значення, як для числового поля, так і для символьного;
п’ять запитів на вибірку суми значень стовпців;
п’ять запитів на вибірку максимального значення, як для числового поля, так і для символьного;
п’ять запитів на вибірку середнього значення стовпця;
п’ять запитів на підрахунок числа записів стовпця;
п’ять запитів зі складними, комбінованими умовами (з використанням логічних функцій);
п’ять запитів з використанням предикату порівняння;
п’ять запитів з використанням предикату діапазону;
п’ять запитів з використанням предикату приналежності до множини;
запит з використанням предикату NULL для кожної з таблиць;
п’ять запитів на вибірку з двох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць;
п’ять запитів на вибірку з трьох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць;
Роздрукований та електронний звіт.
Концептуальна модель:
Завдання до виконання |
Бал |
|
|
4.1 Чотири (або за необхідністю більше) простих запити на вибірку – для відображення повного вмісту таблиць; |
|
1.вивести всі дані з таблиці bar SELECT * FROM `bar` WHERE 1
|
|
2. вивести всі дані з таблиці dir SELECT * FROM `dir` WHERE 1
|
|
3. вивести всі дані з таблиці hotel SELECT * FROM `hotel` WHERE 1
|
|
4. вивести всі дані з таблиці nomer SELECT * FROM `nomer` WHERE 1
|
|
5. вивести всі дані з таблиці personal SELECT * FROM `personal` WHERE 1
|
|
6. вивести всі дані з таблиці product_bar SELECT * FROM `product_bar` WHERE 1
|
|
4.2 п’ять простих запитів на вибірку з використанням логічних операторів AND, OR та NOT; 1. вивести type_nomery, statys_nomeru , де вартість номера більше або дорінює 1000 або менше або дорівнює 600 з таблиці nomer SELECT `type_nomery`, `statys_nomery`, vartist FROM `nomer` WHERE vartist>=1000 OR vartist<=600
|
|
2. вивести кількість номерів, та час приберання, де статус номеру busy з таблиці nomer SELECT nomer.kilkist_nomeriv, nomer.chas_priberanya FROM `nomer` WHERE NOT statys_nomery='busy'
|
|
3. вивести призвіще, та посаду, де зарплатня дорінює 9000 або менше та кількість робочих годин дорівнює 150 з таблиці personal SELECT personal.prizvishe, personal.posada FROM `personal` WHERE personal.zarplatnya=9000 AND personal.rob_godini=150
|
|
4. вивести призвіще та імя директору, де призвіще – бойко або імя є стас з таблиці dir SELECT dir.prizvishe, dir.imya FROM `dir` WHERE dir.prizvishe='Бойко' OR dir.imya='Стас'
|
|
5. Вивести таблиця dir, де відсутнє імя Евгеній SELECT * FROM `dir` WHERE NOT dir.imya='Евгений'
|
|
4.3 п’ять запитів на вибірку унікальних даних; |
|
SELECT DISTINCT product_bar.nazva AS 'напиток' FROM product_bar WHERE
|
|
2.Вивести унікальні дані стовпця nazva, emnist,cina з таблиці product_bar, де emnist=0.5 SELECT DISTINCT product_bar.nazva, product_bar.emnist, product_bar.cina FROM `product_bar` WHERE emnist=0.5
|
|
3. Вивести унікальні дані стовпця kilk_oborotiv, nazva з таблиці product_bar, де kilk_oborotiv =40 SELECT DISTINCT kilk_oborotiv, nazva FROM `product_bar` WHERE kilk_oborotiv=40
|
|
4. Вивести унікальні дані стовпця час приберання, статус номеру з таблиці nomer, де статус номеру - free SELECT DISTINCT chas_priberanya, statys_nomery FROM `nomer` WHERE statys_nomery='free'
|
|
5. Вивести унікальні дані стовпця вартість, статус номеру з таблиці nomer, де вартість номеру < 800 SELECT DISTINCT vartist, type_nomery FROM `nomer` WHERE vartist<800
|
|
|
|
|
|
|
|
4.4 п’ять запитів на оновлення даних (збільшення та зменшення числових даних); |
|
1. збільшити зарплатню на 100, де зарплатня 9000, з таблиці personal UPDATE `personal` SET `zarplatnya`=zarplatnya+100 WHERE zarplatnya=9000
|
|
2. зменшити зарплатню на 200, де зарплатня 7100 або 5100 з таблиці personal UPDATE `personal` SET `zarplatnya`=zarplatnya-200 WHERE zarplatnya=7100 OR zarplatnya=5100
|
|
3.збільшити вартість номеру на 200, де його вартість менше 800 з таблиці nomer UPDATE `nomer` SET `vartist`=vartist+200 WHERE vartist<800
|
|
4. зменшити вартість номеру на 500, де його вартість більше 1500 з таблиці nomer UPDATE `nomer` SET `vartist`=vartist-500 WHERE vartist>1500
|
|
5. збільшити вартість номеру на 300, де його вартість = 1500 з таблиці nomer UPDATE `nomer` SET `vartist`=vartist+300 WHERE vartist=1500
|
|
4.5 п’ять запитів на упорядкування результатів запиту; |
|
1.вивести вартість і тип номеру з таблиці nomer упорядкувавши вартість за зростанням SELECT vartist, type_nomery FROM `nomer` ORDER BY vartist ASC
|
|
2. вивести вартість і тип номеру з таблиці nomer упорядкувавши вартість за спаданням SELECT vartist, type_nomery FROM `nomer` ORDER BY vartist DESC
|
|
3. вивести номер кимнати і час приберання номеру з таблиці nomer упорядкувавши час приберання за спаданням SELECT nomer_kimnati, chas_priberanya FROM `nomer` ORDER BY chas_priberanya DESC
|
|
4. вивести номер кимнати і час приберання номеру з таблиці nomer упорядкувавши час приберання за зростанням SELECT nomer_kimnati, chas_priberanya FROM `nomer` ORDER BY chas_priberanya
|
|
5. вивести кількість оборотів і дату виготовлення з таблиці product_bar упорядкувавши кількість оборотів за спаданням SELECT kilk_oborotiv, data_vigotov FROM `product_bar` ORDER BY kilk_obor otiv DESC
|
|
4.6 п’ять запитів на вибірку мінімального значення, як для числового поля, так і для символьного; |
|
SELECT stag, prizvishe FROM `personal` WHERE stag=(SELECT MIN(stag) FROM personal WHERE 1)
|
|
2. Вивести кількість робочих годин та призвіще персоналу де кількість робочих годин є найменшим з таблиці personal SELECT rob_godini, prizvishe FROM `personal` WHERE rob_godini=(SELECT MIN(rob_godini) FROM personal WHERE 1)
|
|
3. Вивести посаду та призвіще персоналу де призвіще є найменшим з таблиці personal SELECT posada, prizvishe FROM `personal` WHERE prizvishe=(SELECT MIN(prizvishe) FROM personal WHERE 1)
|
|
4. Вивести таблицю personal де імя є найменшим з таблиці personal SELECT personal.* FROM `personal` WHERE imya=(SELECT MIN(imya) FROM personal WHERE 1)
|
|
5. Вивести назву,торгову марку,ціну з таблиці product_bar де ціна є найменшою SELECT nazva, torg_mark, cina FROM `product_bar` WHERE cina=(SELECT MIN (cina) FROM product_bar WHERE 1 )
|
|
4.7 п’ять запитів на вибірку суми значень стовпців; 1.вивести суму стовпця ціна з таблиці product_bar SELECT SUM(cina) FROM `product_bar`
|
|
2. вивести суму стовпця ємність з таблиці product_bar SELECT SUM(emnist) FROM `product_bar`
|
|
3. вивести суму стовпця кількість оборотів з таблиці product_bar SELECT SUM(kilk_oborotiv) FROM `product_bar`
|
|
4. вивести суму стовпця зарплатня з таблиці personal SELECT SUM(zarplatnya) FROM `personal`
|
|
5. вивести суму робочих годин всього персоналу з таблиці personal SELECT SUM(rob_godini) FROM `personal`
|
|
4.8 п’ять запитів на вибірку максимального значення, як для числового поля, так і для символьного; |
|
1.вивести стаж та призвіще, де максимальне значення стажу з таблиці personal sELECT stag, prizvishe FROM `personal` WHERE stag=(SELECT MAX(stag) FROM personal WHERE 1)
|
|
2. вивести робочі години та призвіще, де максимальне значення робочих годин з таблиці personal SELECT rob_godini, prizvishe FROM `personal` WHERE rob_godini=(SELECT MAX(rob_godini) FROM personal WHERE 1)
|
|
3. вивести посаду та призвіще, де максимальне значення символів в призвіщі з таблиці personal SELECT posada, prizvishe FROM `personal` WHERE prizvishe=(SELECT MAX(prizvishe) FROM personal WHERE 1)
|
|
4. вивести таблицю personal, де максимальне значення символів в імені з таблиці personal SELECT personal.* FROM `personal` WHERE imya=(SELECT MAX(imya) FROM personal WHERE 1)
|
|
5. вивести назву, торгову марку,ціну, де максимальне значення ціни з таблиці product_bar SELECT nazva, torg_mark, cina FROM `product_bar` WHERE cina=(SELECT MAX(cina) FROM product_bar WHERE 1 )
|
|
4.9 п’ять запитів на вибірку середнього значення стовпця; |
|
1. вивести середнє значення ціни з таблиці product_bar SELECT AVG(cina) FROM `product_bar`
|
|
2. вивести середнє значення ємності з таблиці product_bar SELECT AVG(emnist) FROM `product_bar`
|
|
3. вивести середнє значення кількості оборотів з таблиці product_bar SELECT AVG(kilk_oborotiv) FROM `product_bar`
|
|
4. вивести середнє значення зарплатні з таблиці personal SELECT AVG(zarplatnya) FROM `personal`
|
|
5. вивести середнє значення робочих годин з таблиці personal SELECT AVG(rob_godini) FROM `personal`
|
|
|
|
1.Вивести кількість рядків совпця cina, де cina <=100 з таблиці product_bar SELECT COUNT(cina) FROM `product_bar` WHERE cina<=100
|
|
2. Вивести кількість рядків совпця emnist, де emnist <=0.5 з таблиці product_bar SELECT COUNT(emnist) FROM `product_bar` WHERE emnist<=0.5
|
|
3. Вивести кількість рядків совпця kilk_oborotiv, де kilk_oborotiv=40 з таблиці product_bar SELECT COUNT(kilk_oborotiv) FROM `product_bar` WHERE kilk_oborotiv=40
|
|
4. Вивести кількість рядків совпця zarplatnya, де zarplatnya має 9100 та 4900 з таблиці personal SELECT COUNT(zarplatnya) FROM `personal` WHERE zarplatnya IN(9100, 4900)
|
|
5. Вивести кількість рядків совпця rob-godini, де rob-godini з 100 по 160 з таблиці personal SELECT COUNT(rob_godini) FROM `personal` WHERE rob_godini BETWEEN 100 AND 160
|
|
4.11 п’ять запитів зі складними, комбінованими умовами (з використанням логічних функцій) |
|
1. Вивести призвіще, імя, посаду, де посада не Адміністратор з таблиці personal SELECT personal.prizvishe, imya, posada FROM `personal` WHERE NOT posada= 'Администратор
|
|
2. Вивести призвіще, імя, посаду, де посада не Адміністратор та зарплатня не дорінює 6000 з таблиці personal SELECT personal.prizvishe, imya, posada FROM `personal` WHERE NOT posada= 'Администратор' AND NOT zarplatnya=6000
|
|
3. Вивести призвіще, імя, де призвіще Бойко або імя є Стас з таблиці dir SELECT dir.prizvishe, dir.imya FROM `dir` WHERE dir.prizvishe='Бойко' OR dir.imya='Стас'
|
|
4. Вивести вартість, тип номеру, статус номеру, де статус номеру “busy” або вартість номеру є максимальною з таблиці nomer SELECT vartist, type_nomery, statys_nomery FROM `nomer` WHERE statys_nomery='busy' OR vartist=(SELECT MAX(vartist) type_nomery FROM nomer WHERE 1)
|
|
5. Вивести кількість робочих годин та стаж, де кількість робочих NULL або зарплатня дорінює 9000 з таблиці personal SELECT rob_godini, stag FROM `personal` WHERE rob_godini IS null OR zarplatnya=9100
|
|
4.12 п’ять запитів з використанням предикату порівняння; |
|
1. вивести призвіще, посаду, стаж ,де стаж <15 з таблиці personal SELECT prizvishe, posada, stag FROM `personal` WHERE stag<15
|
|
2. вивести назву, торгову марку, ціну, ємність, де ємність <=0.5 з таблиці product_bar SELECT product_bar.nazva, product_bar.torg_mark, product_bar.cina, product_bar.emnist FROM `product_bar` WHERE emnist<=0.5
|
|
3. Вивести вартість, тип номеру, номер кімнати, де вартість номеру =800 з таблиці nomer SELECT vartist, type_nomery, nomer_kimnati FROM `nomer` WHERE vartist = 800
|
|
4. Вивести таблицю personal, де посада є 'охранник' і зарплатня >6000 з таблиці personal SELECT * FROM `personal` WHERE posada='Охранник' AND zarplatnya>6000
|
|
5. Вивести тип номеру, вартість, час прибирання, де kilkist_nomeriv>=3 з таблиці nomer SELECT type_nomery, vartist, chas_priberanya FROM `nomer` WHERE kilkist_nomeriv>=3
|
|
4.13 п’ять запитів з використанням предикату діапазону; |
|
1. Вивести вартість, тип номеру, час приберання, де час приберання з '13:00:00' по '15:00:00' таблиці nomer SELECT type_nomery, vartist, chas_priberanya FROM `nomer` WHERE chas_priberanya BETWEEN '13:00:00' AND '15:00:00'
|
|
2. Вивести вартість, тип номеру, час приберання, де вартість в межах з 500 до 800 таблиці nomer SELECT type_nomery, vartist, chas_priberanya FROM `nomer` WHERE vartist BETWEEN '500' AND '800'
|
|
3. Вивести вартість, тип номеру, час приберання, де вартість не відносяться до меж з 500 до 800 таблиці nomer SELECT type_nomery, vartist, chas_priberanya FROM `nomer` WHERE vartist NOT BETWEEN '500' AND '800'
|
|
4. Вивести стовбці призвіще, імя, посада, зарплатня, де вартість відносяться до меж з 6000 до 9100 таблиці personal SELECT prizvishe, imya, posada, zarplatnya FROM `personal` WHERE zarplatnya BETWEEN 6000 AND 9100
|
|
5. Вивести стовбці призвіще, імя, посада, зарплатня, де вартість відносяться до меж з 6000 до 9100 і кількість робочих годин =150 таблиці personal SELECT prizvishe, imya, posada, zarplatnya FROM `personal` WHERE zarpl atnya BETWEEN 6000 AND 9100 AND rob_godini=150
|
|
4.14 п’ять запитів з використанням предикату приналежності до множини; |
|
1. Вивести стовбці назва, торгова марка, ціна, ємність, де ємність має в собі 0,5 і 1,5 з таблиці product_bar SELECT nazva, torg_mark, cina, emnist FROM `product_bar` WHERE emnist IN ('0.5', '1.5')
|
|
2. Вивести стовбці назва, торгова марка, ціна, ємність, де назва має в собі Пиво і Водку з таблиці product_bar SELECT nazva, torg_mark, cina, emnist FROM `product_bar` WHERE nazva IN ('Пиво', 'Водка')
|
|
3. Вивести стовбці вартість, статус номеру, тип номеру, номер кімнати, де тип номеру має в собі single і lux з таблиці nomer SELECT vartist, statys_nomery, type_nomery, nomer_kimnati FROM `nomer` WHERE type_nomery IN ('Single', 'LUX')
|
|
4. Вивести стовбці вартість, статус номеру, тип номеру, номер кімнати, де вартість має в собі 800 і 1400 з таблиці nomer SELECT vartist, statys_nomery, type_nomery, nomer_kimnati FROM `nomer` WHERE vartist IN ('800', '1400')
|
|
5. Вивести таблицю personal, де посада належить Прислузі та Адміністратору SELECT * FROM `personal` WHERE posada IN ('Прислуга', 'Администратор')
|
|
4.15 запит з використанням предикату NULL для кожної з таблиць; |
|
1. Вивести таблицю product_bar, де кількість оборотів має значення NULL SELECT * FROM `product_bar` WHERE kilk_oborotiv IS null
|
|
2. Вивести таблицю personal, де стаж має значення NULL SELECT * FROM `personal` WHERE stag is not null
|
|
3. Вивести вартість, тип номеру, статус номеру , де статус номеру має значення NULL таблиці nomer SELECT vartist, type_nomery, statys_nomery FROM `nomer` WHERE statys_nomery IS null
|
|
4. Вивести таблицю hotel, де home-telephone має значення NULL SELECT * FROM `hotel` WHERE `home-telephone` is null
|
|
5. Вивести таблицю dir, де імя по батькові має значення NULL SELECT * FROM `dir` WHERE po_batkoviy IS NOT null
|
|
4.16 п’ять запитів на вибірку з двох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць; |
|
1.зєднати стовбці назва бару з таблиці bar та назву, торгова марку, ціну з таблиці bar product_bar за допомогою join on SELECT bar.nazva_bary, product_bar.nazva, product_bar.torg_mark, product_bar.cina FROM `bar` JOIN product_bar ON bar.id_bar=product_bar.id_bar
|
|
2. зєднати стовбці назва бару з таблиці bar та назву, торгову марку, ціну, де в торговій маркі присутня літера “е” з таблиці bar product_bar за допомогою Join on SELECT bar.nazva_bary, product_bar.nazva, product_bar.torg_mark, product_bar.cina FROM `bar` JOIN product_bar ON bar.id_bar=product_bar.id_bar AND product_bar.torg_mark LIKE '%e%'
|
|
3. зєднати стовбці назва бару з таблиці bar та назву, торгова марку, ціну з таблиці bar product_bar за допомогою Using SELECT bar.nazva_bary, product_bar.nazva, product_bar.torg_mark, product_bar.cina FROM `bar` JOIN product_bar USING (id_bar)
|
|
4. з’єднати стовбці адреса з таблиці hotel та назву, cереднє значення вартості номеру з таблиці bar nomer SELECT hotel.adress, AVG(nomer.vartist) FROM `nomer`, hotel WHERE nomer.id_hotel=hotel.id_hotel
|
|
5. з’єднати стовбці email i телефон з таблиці hotel та посаду, прізвище з таблиці personal SELECT hotel.email, hotel.telephon, personal.posada, personal.prizvishe FROM `personal`, hotel WHERE personal.id_hotel=hotel.id_hotel AND personal.posada='Администратор'
|
|
4.17 п’ять запитів на вибірку з трьох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць; |
|
1. з’єднати стовбці час приберанняя та і прізвище , де посада є ‘прислугою’ викораставши join on SELECT DISTINCT nomer.chas_priberanya, personal.posada, personal.prizvishe FROM hotel JOIN nomer ON nomer.id_hotel=hotel.id_hotel JOIN personal ON personal.id_hotel=hotel.id_hotel AND personal.posada='Прислуга'
|
|
2. з’єднати стовбці назвва бару з таблиці bar та назву, торгову марку, де в назві містить літера ‘п’ з таблиці product_bar та адресу з таблиці hotel SELECT bar.nazva_bary, product_bar.nazva, product_bar.torg_mark, hotel.adress FROM `product_bar`, hotel, bar WHERE bar.id_bar=product_bar.id_bar AND bar.id_hotel=hotel.id_hotel AND product_bar.nazva LIKE ('П%')
|
|
3. з’єднати стовбці прізвище директора з таблиці dir та посаду,та призвище персонал з таблиці personal та телефон з таблиці hotel SELECT dir.prizvishe AS 'призвище директора', personal.posada, personal.prizvishe, hotel.telephon FROM `dir`, personal, hotel WHERE hotel.id_hotel=personal.id_hotel AND dir.id_hotel=hotel.id_hotel
|
|
4. з’єднати стовбці тип номера, в типі номера присутня літера ‘S’ з таблиці nomer,та адресу з таблиці hotel та назву бару з таблиці bar. SELECT nomer.type_nomery, hotel.adress, bar.nazva_bary FROM `nomer`, bar, hotel WHERE hotel.id_hotel=nomer.id_hotel AND bar.id_hotel=hotel.id_hotel AND type_nomery LIKE 'S%'
|
|
5. з’єднати стовбці прізвище, робочі години , та посаду, де посада є ‘Прислуга’ з таблиці nomer,та телефон з таблиці hotel та назву бару з таблиці bar. SELECT personal.prizvishe, personal.rob_godini, personal.posada, bar.nazva_bary, hotel.telephon FROM `personal`, bar, hotel WHERE hotel.id_hotel=bar.id_hotel AND hotel.id_hotel=personal.id_hotel AND personal.posada ='Прислуга'
|
|
|
|