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

ОБД / лабки / ОДЗ_БД_Бойко

.docx
Скачиваний:
0
Добавлен:
27.01.2024
Размер:
759.45 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ

МАШИНОБУДІВНИЙ КОЛЕДЖ СУМДУ

Обовязкове домашнє завдання

З дисципліни

«Організація баз даних і знань»

Виконав студент групи 310

Бойко Є.А.

Варіант 3

Перевірив Дорошкова О.М.

Суми 2020

Обов’язкове індивідуальне завдання з дисципліни

«Організація баз даних»

Метою роботи є створення бази даних в запропонованій предметній галузі.

Робота в обов’язковому порядку має містити наступне:

  1. Концептуальну модель, що складається мінімум з чотирьох таблиць;

  2. Кожна з таблиць має містити первинні ключі в обов’язковому порядку, вторинні ключі – за необхідністю;

  3. Дані таблиць повинні містити текстові та числові значення, нульові значення, а також датовані дані .

  4. Необхідну кількість запитів, що задовольнять наступним вимогам. Результати подати у вигляді змісту запиту, синтаксису запиту та скрін-шоту результату виконання запиту з екрану.

    1. чотири (або за необхідністю більше) простих запити на вибірку – для відображення повного вмісту таблиць;

    2. п’ять простих запитів на вибірку з використанням логічних операторів AND, OR та NOT;

    3. п’ять запитів на вибірку унікальних даних;

    4. п’ять запитів на оновлення даних (збільшення та зменшення числових даних);

    5. п’ять запитів на упорядкування результатів запиту;

    6. п’ять запитів на вибірку мінімального значення, як для числового поля, так і для символьного;

    7. п’ять запитів на вибірку суми значень стовпців;

    8. п’ять запитів на вибірку максимального значення, як для числового поля, так і для символьного;

    9. п’ять запитів на вибірку середнього значення стовпця;

    10. п’ять запитів на підрахунок числа записів стовпця;

    11. п’ять запитів зі складними, комбінованими умовами (з використанням логічних функцій);

    12. п’ять запитів з використанням предикату порівняння;

    13. п’ять запитів з використанням предикату діапазону;

    14. п’ять запитів з використанням предикату приналежності до множини;

    15. запит з використанням предикату NULL для кожної з таблиць;

    16. п’ять запитів на вибірку з двох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць;

    17. п’ять запитів на вибірку з трьох таблиць з ОБОВ’ЯЗКОВИМ використанням об’єднання таблиць;

  1. Роздрукований та електронний звіт.

Концептуальна модель:

Завдання до виконання

Бал

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 п’ять запитів на вибірку унікальних даних;

  1. Вивести унікальні дані стовпця nazva з таблиці product_bar

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 п’ять запитів на вибірку мінімального значення, як для числового поля, так і для символьного;

  1. Вивести стаж та призвіще персоналу де стаж є найменшим з таблиці personal

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. п’ять запитів на підрахунок числа записів стовпця;

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 ='Прислуга'

Соседние файлы в папке лабки