Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Бази даних та знань

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"  Звіт до лабораторної роботи №2 Отримання даних та статистичної інформації з бази даних за допомогою запитів мовою T-SQL з курсу : “БАЗИ ДАНИХ ТА ЗНАНЬ” Варіант №9 ЛЬВІВ - 2017 Мета роботи : Ознайомитися зі структурованою мовою запитів SQL на основі її діалекту Transact-SQL для СКБД Microsoft SQL Server 2005 та отримати навики написання SQL-запитів для здійснення вибірки даних та отримання статистичної інформації за допомогою інструментарію Management Studio. Завдання до лабораторної роботи : Варіант №9 1. БД «Комп. фірма». Знайти виробників принтерів. Вивести: maker, type. Вихідні дані впорядкувати за спаданням за стовпцем maker. 2. БД «Аеропорт». З таблиці Trip вивести інформацію про рейси, що вилітають в інтервалі часу між 12 та 17 годинами включно. 3. БД «Комп. фірма». Виведіть виробника, тип, модель та частоту процесора для ноутбуків, частота процесорів яких перевищує 600 МГц. Вивести: maker, type, model, speed. 4. БД «Комп. фірма». Знайдіть виробників, що випускають одночасно ПК та ноутбуки (використати ключове слово ANY). Вивести maker. 5. БД «Кораблі». За Вашингтонським міжнародним договором від початку 1922 р. заборонялося будувати лінійні кораблі водотоннажністю понад 35 тис. тонн. Вкажіть кораблі, що порушили цей договір (враховувати лише кораблі з відомим роком спущення на воду, тобто з таблиці Ships). Виведіть: name, launched, displacement. 6. БД «Комп. фірма». Для таблиці PC вивести всю інформацію з коментарями в кожній комірці, наприклад, 'модель: 1121', 'ціна: 600,00'. 7. БД «Аеропорт». Визначіть кількість рейсів до міста 'Moscow' для кожної дати таблиці Pass_in_trip. Вивести: date, число рейсів. 8. БД «Комп. фірма». Для кожного значення швидкості ПК, що перевищує 600 МГц, визначіть середню ціну ПК із такою ж швидкістю. Вивести: speed, середня ціна. (Підказка: використовувати підзапити в якості обчислювальних стовпців) 9. БД «Комп. фірма». Для таблиці Product отримати підсумковий набір у вигляді таблиці зі стовпцями maker, printer, у якій для кожного виробника необхідно вказати, чи виробляє він ('yes'), чи ні ('no') відповідний тип продукції. У першому випадку ('yes') додатково вказати поруч у круглих дужках загальну кількість наявної (тобто, що знаходиться в таблиці Printer) продукції, наприклад, 'yes(2)'. (Підказка: використовувати підзапити в якості обчислювальних стовпців та оператор CASE) 10. БД «Кораблі». Для кожного класу порахувати кількість кораблів, що входить до нього (врахувати також кораблі в таблиці Outcomes, яких немає в таблиці Ships). Вивести: class, кількість кораблів у класі. (Підказка: використовувати оператор UNION та операцію EXISTS) БД «Комп’ютерна фірма» Таблиця Product містить дані про виробника – maker, номер моделі – model та тип – type ('PC' – ПК, 'Laptop' – ноутбук, 'Printer' – принтер). Вважається, що номери моделей у таблиці Product є унікальними для всіх виробників та типів продуктів. У таблиці PC для кожного ПК, що однозначно визначається унікальним кодом – code, є вказані: модель – model, швидкість – speed (процесор у мегагерцах), об’єм пам’яті – ram (у мегабайтах), розмір диску – hd (у гігабайтах), швидкість CD-приводу – cd (наприклад, '4x') та ціна – price. Таблиця Laptop є аналогічною таблиці PC за виключенням того, що замість швидкості CD-приводу містить розмір екрану – screen (у дюймах). У таблиці Printer для кожної моделі принтера – model вказуються можливості кольору друку – color ('y' – для кольорових), тип принтера – type ('Laser'– лазерний, 'Jet' – струменевий, 'Matrix' – матричний) та ціна – price. БД «Кораблі» Розглядається БД кораблів, що брали участь у другій світовій війні. Кораблі в «класах» побудовані за одним і тим ж проектом, а класу присвоюється, або ім’я першого корабля, побудованого за даним проектом, або назві класу дається ім’я проекту, що не співпадає з жодною назвою корабля. Корабель, що дав назву класу, називається головним. Таблиця Classes містить ім’я класу – class, тип – type ('bb' для бойового (лінійного) корабля або 'bc' для бойового крейсеру), країну, у якій побудовано корабель – country, кількість головних гармат – numGuns, калібр гармат – bore (діаметр жерла гармати в дюймах) та водотоннажність – displacement (вага в тоннах). У таблиці Ships внесені назви кораблів – name, імена їхніх класів – class та роки спущення на воду – launched. У таблицю Battles внесені назви (name) та дати (date) битв, у яких брали участь кораблі. У таблицю Outcomes внесені результати участі кожного корабля в битві ('sunk' – потоплений, 'damaged' – пошкоджений, 'OK' – цілий). Зауваження: у таблицю Outcomes можуть входити кораблі, що є відсутні в таблиці Ships. БД «Аеропорт» Таблиця Company містить ідентифікатор – ID_comp та назву компанії – name, що здійснює перевезення пасажирів. Таблиця Trip містить інформацію про виконувані рейси: номер рейсу – trip_no, ідентифікатор компанії – ID_comp, тип літака – plane, місто відправлення – town_from, місто прибуття – town_to, час відправлення – time_out та час прибуття – time_in. Таблиця Passenger містить ідентифікатор – ID_psg та ім’я пасажира – name. Таблиця Pass_in_trip містить інформацію про польоти: номер рейсу – trip_no, дата вильоту – date (день), ідентифікатор пасажира – ID_psg та місце – place, на якому він сидів під час польоту. Зауваження: слід мати на увазі, що: рейси виконуються щоденно, а тривалість польоту будь-якого рейсу менша доби; час та дати враховуються відносно одного часового поясу; час відправлення та прибуття вказується з точністю до хвилини; серед пасажирів можуть бути такі, що мають однакові прізвища (однакові значення поля name, наприклад, 'Bruse Willis'); номер місця в салоні – це число з літерою; число визначає номер ряду, а літера ('a' - 'd') місце в ряду зліва направо в алфавітному порядку, наприклад, '6d'. Короткі теоретичні відомості : Відомості про Transact-SQL Мова Transact-SQL (чи скорочено T-SQL) – це власний діалект мови структурованих запитів (Structured Query Language – SQL), що використовується в системі керування базами даних (СКБД) Microsoft SQL Server. Мова T-SQL призначена виключно для роботи з СКБД Microsoft SQL Server, хоча і є сумісною на початковому рівні зі стандартом ANSI SQL-92. Це означає, що основні базові оператори є такими ж, як і для інших відомих СКБД: Oracle, Sybase, DB2, MySQL, PostgreSQL. Тому отримані навики написання SQL-запитів за допомогою T-SQL можуть бути використані й при роботі із цими переліченими серверами баз даних. Але при цьому слід враховувати, що в кожній реляційній СКБД використовуються різні розширення та способи підвищення продуктивності, що доповнюють вказаний стандарт та навіть виходять далеко за його рамки. Це такі засоби, як умовна обробка (IF … THEN), керуючі оператори (наприклад, цикли WHILE), змінні, засоби оброблення помилок тощо. У загальному мова SQL поділяється на три частини: Оператори визначення даних – DDL (Data Definition Language). Призначені для опису структури баз даних. Це такі як: CREATE (створити), ALTER (змінити), DROP (видалити). Оператори маніпулювання даними – DML (Data Manipulation Language). Призначені для отримання, вставки, видалення чи зміни даних у базі даних. Це такі як: SELECT (вибрати), INSERT (вставити), UPDATE (обновити), DELETE (видалити). Оператори керування доступом до даних – DCL (Data Control Language). Це такі як: GRANT (надати доступ), REVOKE (анулювати попередні права). Цей «кістяк» є загальним для всіх існуючих діалектів мови SQL. Найбільшим по своїй структурі та можливостям серед них є оператор вибірки SELECT. Саме тому ця лабораторна робота і є зорієнтованою на написання SQL-запитів на основі оператора SELECT. Оператор вибірки SELECT SELECT [ DISTINCT ] < * | перелік стовпців | формули | статистичні функції > FROM < перелік таблиць [ псевдоніми ] > [ WHERE < умова відбору даних > ] [ GROUP BY < ім’я стовпця(ів) > [ HAVING < умова для групи > ] ] [ ORDER BY < перелік стовпців | порядкові № стовпців > ] [ ; ] SELECT – основний оператор. Після нього перераховуються стовпці, які необхідно отримати від сервера. FROM – у цій секції вказуються таблиці, з яких необхідно отримати певні дані. WHERE – у цій секції можна задати параметри пошуку та обмеження для вихідних даних. GROUP BY – у цій секції можна вказати перелік стовпців, за якими необхідно згрупувати дані. HAVING – у цій секції можна задати додаткові обмеження пошуку для створених груп. ORDER BY – у цій секції можна вказати параметри сортування, а точніше, стовпці, за якими буде відсортований результат. Зауваження: згідно негласного правила, прийнято писати команди та ключові слова мови SQL великими літерами, а назви імен таблиць, стовпців та відмінних від констант змінних – змішаним регістром літер, хоча така вимога для СКБД не є обов’язковою. Повний шлях Повний формат звертання до таблиці виглядає так : БазаДаних.Схема.Таблиця (Labor_SQL.Pavelchak.Classes ) Якщо вже існує підключення до потрібної бази даних, то її можна не вказувати, а вказати лише схему та таблицю : Схема.Таблиця ( Pavelchak.Classes ) Якщо таблиця створена для схеми dbo, тоді можна пропустити й цей параметр. Таблиця ( Ships ) Тому рекомендується створювати таблиці саме із цими правами. Якщо необхідно звернутися до іншої БД, але відомо, що таблиця належить dbo, тоді до таблиці можна звернутися так : БазаДаних. . Таблиця ( Labor_SQL. .Ships ) Проста вибірка SELECT * FROM Students; Буде виведено таблицю з усіма даними. Груповий символ * замінює перелік з усіма стовпцями таблиці. Вибір декількох стовпців SELECT Surname, Name FROM Students; Стовпці будуть виведені в тому порядку, у якому вони вказані в переліку після ключового слова SELECT. Псевдоніми для стовпців SELECT Surname AS Sn, Name AS N FROM Students; або SELECT Surname Sn, Name N FROM Students; Ключове слово AS є необов’язковим. Псевдоніми (у прикладі Sn та N) використовуються лише для іменування стовпців при виведенні та представленні їх за межами цього запиту. Ключове слово DISTINCT SELECT DISTINCT Surname, Name FROM Students; Ключове слово DISTINCT забезпечує фільтрацію дублікатів стрічок, що мають бути виведеними. Створені SQL-запити до БД : /*1. БД «Комп. фірма». Знайти виробників принтерів. Вивести: maker, type. Вихідні дані впорядкувати за спаданням за стовпцем maker.*/ SELECT DISTINCT maker, type FROM Product WHERE type = 'Printer' ORDER BY maker DESC; /*2. БД «Аеропорт». З таблиці Trip вивести інформацію про рейси, що вилітають в інтервалі часу між 12 та 17 годинами включно.*/ SELECT time_out FROM Trip WHERE (DATENAME(hour, Trip.time_out) BETWEEN 12 AND 17) AND NOT ((DATENAME(minute, Trip.time_out) > 0) AND (DATENAME(hour, Trip.time_out) IN('12','17'))); /*3. БД «Комп. фірма». Виведіть виробника, тип, модель та частоту процесора для ноутбуків, частота процесорів яких перевищує 600 МГц. Вивести: maker, type, model, speed.*/ SELECT maker, type, (SELECT model FROM Product WHERE (Product.model=Laptop.model)) AS model,speed FROM Product, Laptop WHERE (Product.model = Laptop.model)AND(Laptop.speed >= 600); /*4. БД «Комп. фірма». Знайдіть виробників, що випускають одночасно ПК та ноутбуки (використати ключове слово ANY). Вивести maker.*/ SELECT DISTINCT maker FROM Product WHERE (maker=ANY(SELECT maker FROM Product WHERE type='PC')) AND type='Laptop'; /*5. БД «Кораблі». За Вашингтонським міжнародним договором від початку 1922 р. заборонялося будувати лінійні кораблі водотоннажністю понад 35 тис. тонн. Вкажіть кораблі, що порушили цей договір (враховувати лише кораблі з відомим роком спущення на воду, тобто з таблиці Ships). Виведіть: name, launched, displacement.*/ SELECT Name, Launched, Displacement FROM Classes C, Ships S WHERE C.class=S.class AND S.launched >= 1922 AND Displacement>35000 /*6. БД «Комп. фірма». Для таблиці PC вивести всю інформацію з коментарями в кожній комірці, наприклад, 'модель: 1121', 'ціна: 600,00'.*/ SELECT ('Код : '+str(code,2)) AS code, ('Модель : '+str(model,4)) AS model, ('Швидкість : '+str(speed,3)) AS speed, ('ОЗП : '+str(ram,3)) AS ram, ('Жорсткий диск : '+str(hd,2)) AS hd, ('Оптичний привід : '+cd) AS cd, ('Ціна : '+str(price,3)) AS price FROM PC; /*7. БД «Аеропорт». Визначіть кількість рейсів до міста 'Moscow' для кожної дати таблиці Pass_in_trip. Вивести: date, число рейсів.*/ SELECT date, COUNT(*) AS Число_рейсів FROM Pass_in_trip WHERE trip_no=ANY(SELECT trip_no FROM Trip WHERE town_to='moscow') GROUP BY date; /*8. БД «Комп. фірма». Для кожного значення швидкості ПК, що перевищує 600 МГц, визначіть середню ціну ПК із такою ж швидкістю. Вивести: speed, середня ціна. (Підказка: використовувати підзапити в якості обчислювальних стовпців)*/ SELECT speed,Avg(price) AS Середня_ціна FROM PC WHERE speed>'600' GROUP BY speed; /*9. БД «Комп. фірма». Для таблиці Product отримати підсумковий набір у вигляді таблиці зі стовпцями maker, printer, у якій для кожного виробника необхідно вказати, чи виробляє він ('yes'), чи ні ('no') відповідний тип продукції. У першому випадку ('yes') додатково вказати поруч у круглих дужках загальну кількість наявної (тобто, що знаходиться в таблиці Printer) продукції, наприклад, 'yes(2)'. (Підказка: використовувати підзапити в якості обчислювальних стовпців та оператор CASE)*/ SELECT maker, CASE WHEN ( SELECT COUNT(*) FROM Product WHERE type='printer' GROUP BY maker HAVING maker=P.maker )IS NOT NULL THEN 'yes('+str(( SELECT COUNT(*) FROM Product WHERE type='printer' GROUP BY maker HAVING maker=P.maker ),1)+')' ELSE 'no' END AS Printer FROM Product P GROUP BY maker; /*10. БД «Кораблі». Для кожного класу порахувати кількість кораблів, що входить до нього (врахувати також кораблі в таблиці Outcomes, яких немає в таблиці Ships). Вивести: class, кількість кораблів у класі. (Підказка: використовувати оператор UNION та операцію EXISTS)*/ SELECT class, (SELECT COUNT(*) FROM Ships WHERE Ships.class=Classes.class )AS Кількість_кораблів_у_класі FROM Classes WHERE EXISTS(SELECT * FROM Ships WHERE Ships.class=Classes.class) UNION SELECT class, (SELECT COUNT(*) FROM Outcomes WHERE Classes.class = Outcomes.ship ) AS Кількість_кораблів_у_класі FROM Classes WHERE EXISTS(SELECT * FROM Outcomes WHERE Classes.class = Outcomes.ship) AND NOT EXISTS(SELECT * FROM Ships WHERE Ships.class=Classes.class) Результати виконання запитів до БД : maker type ---------- ---------- E Printer D Printer A Printer (строк обработано: 3) time_out ----------------------- 1900-01-01 14:30:00.000 1900-01-01 16:20:00.000 1900-01-01 15:42:00.000 1900-01-01 12:00:00.000 1900-01-01 14:00:00.000 (строк обработано: 5) maker type model speed ---------- ---------- ---------- ------ B Laptop 1750 750 A Laptop 1298 600 A Laptop 1752 750 (строк обработано: 3) maker ---------- A B (строк обработано: 2) Name Launched Displacement -------------------- -------- ------------ Iowa 1943 46000 Missouri 1944 46000 Musashi 1942 65000 New Jersey 1943 46000 North Carolina 1941 37000 South Dakota 1941 37000 Washington 1941 37000 Wisconsin 1944 46000 Yamato 1941 65000 (строк обработано: 9) code model speed ram hd cd price -------- ------------- --------------- --------- ------------------ --------------------- ---------- Код : 1 Модель : 1232 Швидкість : 500 ОЗП : 64 Жорсткий диск : 5 Оптичний привід : 12x Ціна : 600 Код : 2 Модель : 1121 Швидкість : 750 ОЗП : 128 Жорсткий диск : 14 Оптичний привід : 40x Ціна : 850 Код : 3 Модель : 1233 Швидкість : 500 ОЗП : 64 Жорсткий диск : 5 Оптичний привід : 12x Ціна : 600 Код : 4 Модель : 1121 Швидкість : 600 ОЗП : 128 Жорсткий диск : 14 Оптичний привід : 40x Ціна : 850 Код : 5 Модель : 1121 Швидкість : 600 ОЗП : 128 Жорсткий диск : 8 Оптичний привід : 40x Ціна : 850 Код : 6 Модель : 1233 Швидкість : 750 ОЗП : 128 Жорсткий диск : 20 Оптичний привід : 50x Ціна : 950 Код : 7 Модель : 1232 Швидкість : 500 ОЗП : 32 Жорсткий диск : 10 Оптичний привід : 12x Ціна : 400 Код : 8 Модель : 1232 Швидкість : 450 ОЗП : 64 Жорсткий диск : 8 Оптичний привід : 24x Ціна : 350 Код : 9 Модель : 1232 Швидкість : 450 ОЗП : 32 Жорсткий диск : 10 Оптичний привід : 24x Ціна : 350 Код : 10 Модель : 1260 Швидкість : 500 ОЗП : 32 Жорсткий диск : 10 Оптичний привід : 12x Ціна : 350 Код : 11 Модель : 1233 Швидкість : 900 ОЗП : 128 Жорсткий диск : 40 Оптичний привід : 40x Ціна : 980 (строк обработано: 11) date Число_рейсів ----------------------- ------------ 2003-04-01 00:00:00.000 3 2003-04-13 00:00:00.000 1 2003-04-14 00:00:00.000 2 (строк обработано: 3) speed Середня_ціна ------ --------------------- 750 900,00 900 980,00 (строк обработано: 2) maker Printer ---------- ------- A yes(3) B no C no D yes(2) E yes(1) (строк обработано: 5) class Кількість_кораблів_у_класі -------------------- -------------------------- Bismarck 1 Iowa 4 Kongo 4 North Carolina 3 Renown 3 Revenge 4 Tennessee 2 Yamato 2 (строк обработано: 8) Висновки : Ознайомився з основами мови запитів до БД Transcat-SQL. Для заданих баз даних написав SQL-запити для одержання необхідної інформації. Роботу коду перевірив у середовищі Microsoft SQL Server Management Studio Express.
Антиботан аватар за замовчуванням

21.05.2017 16:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!