You are on page 1of 13

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

Донецький національний університет імені Василя


Стуса Факультет інформаційних і прикладних
технологій

Кафедра інформаційних технологій

ЗВІТ
з лабораторної роботи №4
з дисципліни «Проектування баз даних та знань»
на тему:
«Використання SQL запитів для операцій з реляційною базою даних»

Виконав: студент групи А 2 курсу


Глухенький В.В.
Перевірив:
Гончар В. М.
Вінниця – 2023
Для виконання даної лабораторної роботи я використовуватиму базу даних,
яку я створив в лабораторний роботі №3

1. Вибірка всіх даних з певної таблиці.

SELECT * FROM discipline.faculties;

2. Вибірка лише одного поля певної таблиці.

SELECT fac_name FROM discipline.faculties;

3. Вибірка декількох, але не всіх полів певної таблиці.

SELECT id_fac, fac_name FROM discipline.faculties;;


4. Вибірка одного поля таблиці, виключаючи однакові значення

SELECT DISTINCT term_num FROM discipline.term;

5. Вибірка декількох полів з однієї таблиці, з застосуванням


сортування за одним полем.

SELECT id_term, term_num FROM discipline.term ORDER BY id_term;

6. Вибірка декількох полів з однієї таблиці, з застосуванням


сортування за декількома полями.
SELECT id_teacher, first_name_teacher, last_name_teacher FROM
discipline.teacher ORDER BY id_teacher, id_fac;

7. Вибірка декількох полів з однієї таблиці, з застосуванням


групування за певним полем таблиці, та сортуванням за декількома полями.
SELECT id_term, COUNT(id_disc) AS disc_count
FROM discipline.disc_to_term
GROUP BY id_term
ORDER BY id_term, disc_count DESC;
8. Вибірка декількох полів з однієї таблиці, з застосуванням
групування та умовою для групованих даних, з застосуванням агрегатних
функцій(наприклад лічильник)певним полем таблиці, та сортуванням за
декількома полями.
SELECT
t.id_fac,
t.fac_name,
d.name_disc,
COUNT(DISTINCT s.id_teacher) AS teacher_count
FROM
discipline.faculties t
JOIN
discipline.teacher s ON t.id_fac = s.id_fac
JOIN
discipline.add_disc d ON s.id_teacher = d.id_teacher
GROUP BY
t.id_fac, t.fac_name, d.name_disc
HAVING
COUNT(DISTINCT s.id_teacher) > 1
ORDER BY
t.id_fac, teacher_count DESC;

9. Вибірка та об’єднання декількох таблиць за допомогою


зовнішнього ключа.
SELECT
f.id_fac,
f.fac_name,
t.id_teacher,
t.first_name_teacher,
t.last_name_teacher
FROM
discipline.faculties f
LEFT JOIN
discipline.teacher t ON f.id_fac = t.id_fac;

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


SELECT
id_fac,
fac_name
FROM
discipline.faculties
WHERE
id_fac IN (SELECT DISTINCT id_fac FROM discipline.teacher);

11. Вибірка в якій створюються нові колонки в результуючій таблиці,


для їх створення використовувати альяси.
SELECT
id_teacher,
id_fac,
first_name_teacher,
last_name_teacher,
CONCAT(first_name_teacher, ' ', last_name_teacher) AS full_name
FROM
discipline.teacher;
12. Вибірка в якій потрібно здійснити пошук підрядка в рядку.
SELECT
id_disc,
id_teacher,
name_disc
FROM
discipline.add_disc
WHERE
name_disc LIKE '%даних%';

13. Вибірка де потрібно застосувати оператор заперечення.


SELECT
id_fac,
fac_name
FROM
discipline.faculties
WHERE
fac_name <> 'КН';

14. Вибірка де потрібно застосувати оператор перелічення з варіантів.


SELECT
id_disc,
id_teacher,
name_disc
FROM
discipline.add_disc
WHERE
name_disc NOT LIKE 'Психологія' AND name_disc NOT LIKE 'Бази даних';
15. Вибірка де потрібно отримати результат виконання комбінації
математичних функцій(не менше 3), для цього результату створити нову
колонку у результуючій таблиці, для цього використати альяс.
SELECT
id_disc,
id_teacher,
name_disc,
(id_disc + id_teacher) AS sum_result,
(id_disc - id_teacher) AS diff_result,
(id_disc * id_teacher) AS mult_result
FROM
discipline.add_disc;

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


яка реалізується пошуком підрядка в рядку.

DELETE FROM discipline.add_disc


WHERE name_disc LIKE '%Психологія%';

17. Видалення декількох рядків з таблиці які задовольняють певну


умову яка реалізується пошуком підрядка в рядку

DELETE FROM discipline.add_disc


WHERE name_disc LIKE '%Бази даних%';

18. Видалення лише тих рядків таблиці які задовольняють певну


умову, результатом якої стане лише одне число(індекс потрібного рядка)
DELETE FROM discipline.add_disc
WHERE id_disc = 1;
19. Додавання інформації у записи(не менше 10 записів для кожної
таблиці)
-- Додавання записів у таблицю faculties
INSERT INTO discipline.faculties (id_fac, fac_name) VALUES
(1, 'Факультет мистецтв'),
(2, 'Факультет природничих наук'),
(3, 'Факультет соціальних наук'),
(4, 'Факультет гуманітарних наук'),
(5, 'Факультет інформаційних технологій');

-- Додавання записів у таблицю teacher


INSERT INTO discipline.teacher (id_teacher, id_fac, first_name_teacher,
last_name_teacher) VALUES
(1, 1, 'Іван', 'Петренко'),
(2, 2, 'Марія', 'Коваленко'),
(3, 3, 'Олександр', 'Сидоренко'),
(4, 4, 'Ольга', 'Іваненко'),
(5, '5', 'Віталій', 'Мельник');

-- Додавання записів у таблицю term


INSERT INTO discipline.term (id_term, term_num) VALUES
(1, 'Осінь 2023'),
(2, 'Весна 2024'),
(3, 'Літо 2024'),
(4, 'Осінь 2024'),
(5, 'Весна 2025');

-- Додавання записів у таблицю disc_to_term


INSERT INTO discipline.disc_to_term (id_disc, id_term) VALUES
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5);

-- Додавання записів у таблицю add_disc


INSERT INTO discipline.add_disc (id_disc, id_teacher, name_disc) VALUES
(1, 1, 'Література'),
(2, 2, 'Фізика'),
(3, 3, 'Історія'),
(4, 4, 'Мовознавство'),
(5, 5, 'Інформаційні технології');
20. Оновлення інформації у записах, чиї ідентифікатори є парним
числом.

-- Оновлення інформації у таблиці teacher, де ідентифікатор (id_teacher) парний


UPDATE discipline.teacher
SET first_name_teacher = 'Нове імя'
WHERE MOD(id_teacher, 2) = 0;

-- Оновлення інформації у таблиці add_disc, де ідентифікатор (id_disc) парний


UPDATE discipline.add_disc
SET name_disc = 'Новий предмет'
WHERE MOD(id_disc, 2) = 0;

21. Оновлення інформації у записах, чий ідентифікатор націло


ділиться на певне число.

-- Оновлення інформації у таблиці teacher, де ідентифікатор (id_teacher)


ділиться на 3 націло
UPDATE discipline.teacher
SET last_name_teacher = 'Нове прізвище'
WHERE id_teacher % 3 = 0;

-- Оновлення інформації у таблиці add_disc, де ідентифікатор (id_disc) ділиться


на 5 націло
UPDATE discipline.add_disc
SET name_disc = 'Новий предмет'
WHERE id_disc % 5 = 0;

22. Оновлення інформації у записах, в певному діапазоні, починаючи


з найстаріших і до певного ліміту.

-- Оновлення інформації у таблиці teacher для записів з найстаршими


ідентифікаторами до певного ліміту
UPDATE discipline.teacher
SET first_name_teacher = 'Нове імя'
WHERE id_teacher <= 100
ORDER BY id_teacher DESC
LIMIT 5;

-- Оновлення інформації у таблиці add_disc для записів з найстаршими


ідентифікаторами до певного ліміту
UPDATE discipline.add_disc
SET name_disc = 'Новий предмет'
WHERE id_disc <= 50
ORDER BY id_disc DESC
LIMIT 3;
23. Видалення записів індекс яких не ділиться націло на певне число.

-- Видалення записів з таблиці teacher, де ідентифікатор (id_teacher) не ділиться


на 4 націло
DELETE FROM discipline.teacher
WHERE id_teacher % 4 <> 0;

-- Видалення записів з таблиці add_disc, де ідентифікатор (id_disc) не ділиться


на 6 націло
DELETE FROM discipline.add_disc
WHERE id_disc % 6 <> 0;

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


потрібну літеру.

-- Видалення записів з таблиці teacher, де прізвище (last_name_teacher)


закінчується на літеру 'a'
DELETE FROM discipline.teacher
WHERE SUBSTRING(last_name_teacher, -1) = 'я';

-- Видалення записів з таблиці add_disc, де назва предмета (name_disc)


закінчується на літеру 's'
DELETE FROM discipline.add_disc
WHERE SUBSTRING(name_disc, -1) = 'х';

25. Оновити всі записи таблиці таким чином, щоб їх унікальний


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

-- Оновлення всіх записів у таблиці teacher


UPDATE discipline.teacher
SET id_teacher = id_teacher + 1000;

-- Оновлення всіх записів у таблиці add_disc


UPDATE discipline.add_disc
SET id_disc = id_disc + 1000;
26. Оновити всі записи таблиці таким чином, щоб їх унікальний
ідентифікатор запису змінився таким чином, щоб попередній індекс став в
середину, а з обох боків його були цифри 1(якщо індекс був 1, то зробити 111).

-- Оновлення всіх записів у таблиці teacher


UPDATE discipline.teacher
SET id_teacher = CONCAT(SUBSTRING(id_teacher, 1, LENGTH(id_teacher) - 1),
'1', SUBSTRING(id_teacher, LENGTH(id_teacher), 1));

-- Оновлення всіх записів у таблиці add_disc


UPDATE discipline.add_disc
SET id_disc = CONCAT(SUBSTRING(id_disc, 1, LENGTH(id_disc) - 1), '1',
SUBSTRING(id_disc, LENGTH(id_disc), 1));

27. Оновити всі записи таблиці таким чином, щоб їх унікальний


ідентифікатор запису дорівнював розміру рядка в певному полі цього запису.

-- Оновлення всіх записів у таблиці teacher


UPDATE discipline.teacher
SET id_teacher = CONCAT(SUBSTRING(id_teacher, 1, LENGTH(id_teacher) - 1),
'1', SUBSTRING(id_teacher, LENGTH(id_teacher), 1));

-- Оновлення всіх записів у таблиці add_disc


UPDATE discipline.add_disc
SET id_disc = CONCAT(SUBSTRING(id_disc, 1, LENGTH(id_disc) - 1), '1',
SUBSTRING(id_disc, LENGTH(id_disc), 1));

28. Оновити всі записи таблиці таким чином, щоб їх унікальний


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

-- Оновлення всіх записів у таблиці teacher


UPDATE discipline.teacher
SET id_teacher = ROUND((LENGTH(first_name_teacher) +
LENGTH(last_name_teacher)) / 2);

-- Оновлення всіх записів у таблиці add_disc


UPDATE discipline.add_disc
SET id_disc = ROUND((LENGTH(name_disc) + id_teacher) / 2);
29. Видалити всі рядки, довжина рядку поля яких, менша за середнє
арифметичне значення.

-- Видалення рядків у таблиці teacher


DELETE FROM discipline.teacher
WHERE LENGTH(first_name_teacher) < (SELECT
AVG(LENGTH(first_name_teacher)) FROM discipline.teacher);

-- Видалення рядків у таблиці add_disc


DELETE FROM discipline.add_disc
WHERE LENGTH(name_disc) < (SELECT AVG(LENGTH(name_disc)) FROM
discipline.add_disc);

30. Видалити всі рядки, унікальний ідентифікатор яких має в кінці


певну цифру.

-- Видалення рядків у таблиці teacher


DELETE FROM discipline.teacher
WHERE SUBSTRING(id_teacher, -1) = '5';

-- Видалення рядків у таблиці add_disc


DELETE FROM discipline.add_disc
WHERE SUBSTRING(id_disc, -1) = '3';

Висновок: Під час виконання лабораторної роботи я навчився створювати


запити для різноманітних таблиць із своєї бази даних. У процесі виконання я
оновлював дані, видаляв їх, додавав та виводив значення на екран.

You might also like