Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МНД_Мет_Лаб_Сервер.doc
Скачиваний:
3
Добавлен:
20.11.2019
Размер:
1.62 Mб
Скачать

2 Вивчення методів пошуку та опрацювання даних

ДЛЯ НАУКОВИХ ДОСЛІДЖЕНЬ ЗАСОБАМИ MYSQL / MS АСCESS

РОЗДІЛ 4 СТВОРЕННЯ ЗАПИТІВ ДО ТАБЛИЦЬ БАЗ ДАНИХ

З ОБЧИСЛЕННЯМ РЕЗУЛЬТАТІВ МОВОЮ SQL

4.1 Мета роботи

Засвоїти порядок створення запитів з групуванням даних, обчисленням підмумків, аналізом, зміненням та поданням даних у певному форматі.

4.2 Обладнання для виконання роботи

 персональний комп'ютер Pentium з мікропроцесором частотою понад 160 МГц, накопичувачем на гнучких дисках високої щільності, жорстким диском та накопичувачем на компакт-дисках;

 пам'ять комп'ютера: оперативна пам'ять понад 32 Мбайт, на жорсткому диску понад 1,5 Гбайт вільного простору;

 операційна система Windows ХР.

4.3 Підготовка до виконання роботи

Під час підготовки до лабораторної роботи студентам пропонується:

 повторити вiдповiдний лекцiйний матерiал i вправи, котрі виконувалися на практичних заняттях;

 засвоїти порядок виконання лабораторної роботи вiдповiдно до цих методичних вказiвок, пiдготувати на робочому місці необхiдне обладнання: комп'ютер, дискету, компакт-диск, олівець, аркуш паперу.

4.4 Методичні поради щодо виконання лабораторної роботи

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

В цій роботі, окрім директиви групування GROUP BY, вивчаються функції: COUNT (), що підраховує записи; SUM (), що підсумовує записи; функція AVG (), що усереднює значення, а також функції МАХ () і MIN () для знаходження найменшого і найбільшого значення в наборі записів.

Завдання 1. Перенести записи із існуючої таблиці в нову таблицю.

Перенести записи із існуючої таблиці Студенти_1 в нову таблицю таблицю Студенти_2 командою INSERT з пропозицією SELECT.

Порядок виконання завдання 1:

1. Створити дві таблиці однакової структури з іменами Студенти_1 та Студенти_2 відповідно (рис. 1 та рис. 2) командами:

CREATE TABLE Студенти_1 (Ім’я TEXT, Прізвище TEXT, Місто

TEXT, Школа INT, Стипендія INT);

CREATE TABLE Студенти_1 (Ім’я TEXT, Прізвище TEXT, Місто

TEXT, Школа INT, Стипендія INT);

2. Ввести дані в таблиці Студенти_1 та Студенти_2 командами:

INSERT INTO Студенти_1 (Ім’я, Прізвище, Місто, Школа, Стипендія)

VALUES ('Ілля', 'Назаренко', 'Київ', 20, 1000);

INSERT INTO Студенти_2 (Ім’я, Прізвище, Місто, [Школа №],

Стипендія) VALUES ('Вадим', 'Антонюк', 'Харків', 20, 1200);

Рисунок 1 – Початкова таблиця Студенти_1

Рисунок 2 – Початкова таблиця Студенти_2

3. Перенести записи із таблиці Студенти_1 в таблицю Студенти_2

(рис. 3, рис. 4, рис. 5) командами:

INSERT INTO Студенти_2 SELECT * FROM Студенти_1

WHERE Місто='Харків';

Рисунок 3 – Вихідна таблиця після запиту Місто='Харків'

INSERT INTO Студенти_2 SELECT * FROM Студенти_1

WHERE Місто IN ('Харків', 'Київ', 'Херсон');

Рисунок 4 – Виконання запиту Місто IN ('Харків', 'Київ', 'Херсон')

INSERT INTO Студенти_2 SELECT Ім’я, Прізвище, Місто, Школа, Стипендія

FROM Студенти_1 GROUP BY Ім’я, Прізвище, Місто, Школа, Стипендія;

Рисунок 5 – Вихідна таблиця Студенти_2 після перенесення записів

з таблиці Студенти_1 за умови GROUP BY Ім’я, …, Стипендія

Перша команда INSERT переносе в таблицю Студенти_2 результат запиту Select із таблиці Студенти_1 при дотриманні заданої умови відбору записів Місто='Харків'. Друга команда INSERT переносе в таблицю Студенти_2 всі рядки таблиці Студенти_1, для яких значення поля Місто належить множині значень IN ('Харків', 'Київ', 'Херсон'). Третя команда INSERT переносе в таблицю Студенти_2 всі рядки тих стовпців таблиці Студенти_1, для яких зазначено поля в операторі SELECT та пропозиції GROUP BY, а групування записів здійснено по полю Стипендія.

4. Згрупувати записи таблиці Студенти_2, приведеної на рисунку 5, у вихідні таблиці Студенти_2, що приведені на рисунку 6, командами:

SELECT Ім’я, Прізвище, Місто, Школа, Стипендія FROM Студенти_2

WHERE Місто="Харків" ORDER BY Школа;

SELECT Ім’я, Прізвище, Місто, Школа, Стипендія FROM Студенти_2

WHERE Місто="Харків" ORDER BY Стипендія;

SELECT Ім’я, Прізвище, Місто, Школа, Стипендія FROM Студенти_2

WHERE Місто="Харків" ORDER BY Школа, Стипендія;

Групування ідентичних даних в результативній таблиці запиту здійснюється пропозицією GROUP BY в операторі SELECT. Пропозиція GROUP BY повинна розміщуватися за пропозиціями FROM і WHERE. Стовпці, що підлягають групуванню, записуються у списку стовпців пропозиції GROUP BY один за одним з відокремленням комами.

Рисунок 6 – Групування даних по полям Місто, Школа, Стипендія

Завдання 2. Скласти для приведеного нижче запиту схему даних:

SELECT authors.au_id, authors.author, titles.title, titles.yearpub,

publishers.publisher

FROM ((titles INNER JOIN publishers ON titles.pub_id=publishers.pub_id)

INNER JOIN titleauthors ON titleauthors.title_id=titles.title_id)

INNER JOIN authors ON titleauthors.au_id=authors.au_id;

WHERE titles.yearpub>1996;

Порядок виконання завдання 2:

1. Визначити кількість таблиць та кількість умов з’єднання і обмежень.

До схеми даних належать чотири таблиці – publishers, titleauthors, titles, authors і чотири умови – три на об’єднання і одна на обмеження параметрів. Зв’язок між таблицями здійснюється трьома умовами злиття: titles.pub_id = publishers.pub_id, titleauthors.title_id = titles.title_id, titleauthors.au_id = authors.au_id і одною умовою на параметри WHERE titles.yearpub>1996.

2. Створити таблицю даних authors командою:

Create table authors (au_id INT, author Varchar);

Insert into authors (au_id, author) Values (1, "Isaac Asimov");

3. Створити таблицю даних titles командою:

Create table titles (title_id INT, title Varchar, yearpub INT);

Insert into titles (title_id, title, yearpub) Values (1, "The Green Mile", 2003);

4. Створити таблицю даних publishers командою:

Create table publishers (pub_id INT, publisher Varchar);

Insert into publishers (pub_id, publisher) Values (1, "US");

5. Створити таблицю даних titleauthors командою:

Create table titleauthors (au_id INT, title_id INT);

Insert into titleauthors (au_id, title_id) Values (1, 1);

6. Виконити запит на внутрішнє об’єднання та виведення даних з підтвердженням параметрів (рис. 7 та рис. 8) командою:

SELECT authors.au_id, authors.author, titles.title, titles.yearpub,

publishers.publisher FROM ((titles INNER JOIN publishers

ON titles.pub_id=publishers.pub_id) INNER JOIN titleauthors

ON titleauthors.title_id=titles.title_id) INNER JOIN authors

ON titleauthors.au_id=authors.au_id WHERE titles.yearpub>1996;