ЛЕКЦІЯ 6
Вступ до SQL: декларативний підхід
Основи баз даних
VTFK • 2025
Що вже вивчили
Лекція 5: Типи даних
- INT, VARCHAR, DECIMAL, DATE
- CREATE TABLE з обмеженнями
- Вибір типу за природою даних
План лекції
-
SQL як декларативна мова
-
Структура SELECT запиту
-
FROM та його логіка
-
Перший живий запит
Фокус: как розказати БД ЧТО треба, а не КАК робити
Декларативний vs Імперативний
SQL
Structured Query Language
Мова запитів для отримання, вставки, оновлення та видалення даних у СУБД.
Аналогія:
Як звернення до вчителя: ви говорите, що треба, учитель виконує найоптимальнішим способом
Цикл SQL запиту
Від формулювання до результату
%%{init: {"theme": "neutral", "mermaid": {"version": "11.12.2"}}}%%
flowchart LR
Write[Напишіть запит] --> Parse[Парсинг]
Parse --> Plan[Query planner]
Plan --> Optimize[Оптимізація]
Optimize --> Exec[Виконання]
Exec --> Return[Повернення рядків]
Базовий SELECT
SELECT column1, column2, ...
FROM table_name;
SELECT
— які колонки показати
FROM
— з якої таблиці брати дані
;
— кінець запиту
SELECT
— які колонки показати
FROM
— з якої таблиці брати дані
;
— кінець запиту
SELECT
— які колонки показати
FROM
— з якої таблиці брати дані
;
— кінець запиту
Рух даних крізь SELECT
Таблиця → результат
%%{init: {"theme": "neutral", "mermaid": {"version": "11.12.2"}}}%%
flowchart TD
Table[(Таблиця
100 рядків,
10 колонок)]
Table -->|FROM| ReadAll[Прочитати все]
ReadAll -->|WHERE| Filter[Відфільтрувати]
Filter -->|SELECT| Project[Вибрати колонки]
Project -->|ORDER BY| Sort[Сортувати]
Sort -->|LIMIT| Limit[Обмежити рядки]
Limit -->|return| Result[Результат
N рядків,
M колонок]
Перший запит
Вибираємо все з таблиці users
SELECT * FROM users;
Приклад з коментарями
Вибираємо ID та ім'я користувачів
-- Отримуємо активних користувачів
SELECT
id, -- унікальний ідентифікатор
name, -- повне ім'я
email -- контактний email
FROM users; -- вся таблиця користувачів
Клавіші SQL (키워드)
|
Ключове слово
|
Тип
|
Приклад
|
|
SELECT
|
Clause
|
SELECT col1, col2
|
|
FROM
|
Clause
|
FROM table_name
|
|
WHERE
|
Clause
|
WHERE age > 18
|
|
ORDER BY
|
Clause
|
ORDER BY name ASC
|
|
AND
|
Оператор
|
col1 > 10 AND col2 < 20
|
|
*
|
Спеціальний
|
SELECT * (усе)
|
Міні-вікторина
Що робить SELECT * FROM users?
-
Видаляє всіх користувачів
-
Читає всі колонки та рядки з users
-
Створює нову таблицю
✅ Правильна відповідь: Читає всі колонки та рядки з users
💡 Пояснення:
SELECT читає, не модифікує. * означає всі колонки.
Помилка: забути FROM
⚠️ ЗАСТЕРЕЖЕННЯ
SELECT без FROM = синтаксична помилка
❌ Неправильно
SELECT id, name; -- звідки взяти?
БД не знає, з якої таблиці брати
✓ Правильно
SELECT id, name FROM users;
Явно указуємо таблицю
Історія SQL
Від 1970-х до сьогодні
1974
SEQUEL
Першою версія от IBM
1999
SQL:1999
Додано OOP розширення
2011
SQL:2011
JSON, віконні функції
2025
Сьогодні
SQL + AI (vector search)
Best practices для SELECT
Структура таблиці students
Приклад даних
%%{init: {"theme": "neutral", "mermaid": {"version": "11.12.2"}}}%%
table
title Students Table
Students
id int
name varchar
email varchar
age int
Live: запит до students
Гарна практика
-- Отримуємо базову інформацію про студентів
SELECT
id,
name,
email
FROM students;
-- або скорочено
SELECT id, name, email FROM students;
Підсумки
-
SQL декларативна — каже ЧТО треба, не КАК
-
SELECT указує колонки, FROM указує таблицю
-
LIMIT, WHERE, ORDER BY прилаштовують результат
Далі — функції та вираження у SELECT