Побудова запиту: SQL (DDL, DML, DCL, TCL)

Розділ: Бази та сховища даних

📌 Про що ця тема

SQL — це мова для роботи з реляційними базами даних. На іспиті перевіряють, чи вмієш ти розрізняти групи команд (DDL, DML, DCL, TCL) і розуміти, яка команда для чого служить: створення структури, зміна даних, права доступу, керування транзакціями. Ключове поняття — запит (команда до бази).


📖 Головне

• SQL ділять на 4 групи команд за призначенням: DDL, DML, DCL, TCL.

• DDL (Data Definition Language) — визначення структури бази: CREATE (створити таблицю/базу), ALTER (змінити структуру), DROP (видалити об'єкт повністю), TRUNCATE (очистити всі рядки таблиці, але структура лишається).

• DML (Data Manipulation Language) — робота з даними в таблицях: SELECT (вибірка), INSERT (додати рядок), UPDATE (змінити дані), DELETE (видалити рядки).

• DCL (Data Control Language) — керування правами доступу: GRANT (надати право), REVOKE (відкликати право).

• TCL (Transaction Control Language) — керування транзакціями: COMMIT (підтвердити зміни), ROLLBACK (скасувати зміни), SAVEPOINT (точка збереження всередині транзакції).

• Структура SELECT: SELECT поля FROM таблиця WHERE умова ORDER BY поле.

• WHERE задає умову відбору рядків; оператори: =, <>, <, >, >=, <=, AND, OR, NOT, LIKE (шаблон), IN, BETWEEN.

• ORDER BY сортує результат: ASC — за зростанням (за замовчуванням), DESC — за спаданням.

• Агрегатні функції: COUNT (кількість), SUM (сума), AVG (середнє), MIN, MAX.

• GROUP BY групує рядки для агрегатних функцій; HAVING — умова для груп (на відміну від WHERE, що для окремих рядків).

• INSERT: INSERT INTO таблиця (поля) VALUES (значення).

• UPDATE: UPDATE таблиця SET поле = значення WHERE умова.

• DELETE: DELETE FROM таблиця WHERE умова.


🔢 Як це працює на прикладі

Задача: з таблиці Учні (поля: Ім'я, Клас, Бал) вибрати учнів 11 класу з балом понад 180, за спаданням балу.

SELECT Ім'я, Бал FROM Учні WHERE Клас = 11 AND Бал > 180 ORDER BY Бал DESC;

Крок 1: FROM — беремо таблицю Учні.

Крок 2: WHERE — лишаємо тільки рядки, де Клас = 11 і Бал > 180.

Крок 3: SELECT — показуємо поля Ім'я і Бал.

Крок 4: ORDER BY Бал DESC — сортуємо за спаданням.


Друга задача: середній бал по кожному класу.

SELECT Клас, AVG(Бал) FROM Учні GROUP BY Клас;

GROUP BY об'єднує рядки одного класу, AVG рахує середнє для кожної групи.


⚠️ Типові помилки

• Плутають DELETE і TRUNCATE та DROP: DELETE видаляє рядки (можна з WHERE), TRUNCATE чистить усі рядки, DROP знищує саму таблицю.

• Плутають DML і DDL: INSERT/UPDATE змінюють дані (DML), а ALTER змінює структуру (DDL).

• Забувають WHERE в UPDATE чи DELETE — тоді зміна торкнеться ВСІХ рядків.

• Плутають WHERE і HAVING: WHERE фільтрує рядки до групування, HAVING — уже готові групи.

• Відносять COMMIT/ROLLBACK до DML — це TCL (керування транзакціями).


🎯 Що завчити напам'ять

• DDL: CREATE, ALTER, DROP, TRUNCATE.

• DML: SELECT, INSERT, UPDATE, DELETE.

• DCL: GRANT, REVOKE.

• TCL: COMMIT, ROLLBACK, SAVEPOINT.

• Шаблон SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY.

• ASC — зростання, DESC — спадання.


🧠 Перевір себе

1. До якої групи належить команда ALTER?

2. Чим відрізняється TRUNCATE від DROP?

3. Яка команда надає права доступу?

4. Напиши запит, що виведе всіх учнів з таблиці Учні, відсортованих за ім'ям за зростанням.


Відповіді: 1 — DDL (змінює структуру таблиці); 2 — TRUNCATE видаляє всі рядки, але залишає структуру, DROP знищує всю таблицю; 3 — GRANT (група DCL); 4 — SELECT * FROM Учні ORDER BY Ім'я ASC;

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.