Основи баз даних
VTFK • 2025
Лекція 6: Вступ до SQL
Фокус: трансформувати дані прямо у запиті
Вбудована процедура, яка приймає вхідні параметри та повертає результат.
Аналогія: Як функція у математиці: f(x) = 2*x, але в базах даних
Три основні групи
| Функція | Приклад | Результат |
|---|---|---|
| UPPER(str) | UPPER('hello') | HELLO |
| LOWER(str) | LOWER('WORLD') | world |
| LENGTH(str) | LENGTH('SQL') | 3 |
| SUBSTR(str,pos,len) | SUBSTR('Database', 1, 4) | Data |
| CONCAT(s1,s2) | CONCAT('Hello',' World') | Hello World |
| TRIM(str) | TRIM(' text ') | text |
Трансформуємо імена
SELECT
id,
UPPER(name) AS upper_name,
LOWER(name) AS lower_name,
LENGTH(name) AS name_length,
SUBSTR(email, 1, 5) AS email_prefix
FROM users;
З прайсом та знижками
SELECT
id,
product_name,
price,
quantity,
price * quantity AS total,
ROUND(price * 0.9, 2) AS discounted_price,
ROUND(ABS(price - 100), 2) AS diff_from_100
FROM products;
| Функція | Назва | Приклад |
|---|---|---|
| COUNT(*) | Кількість рядків | COUNT(*) FROM users |
| COUNT(col) | Неоткл значення | COUNT(email) FROM users |
| SUM(col) | Сума | SUM(amount) FROM orders |
| AVG(col) | Середнє | AVG(price) FROM products |
| MAX(col) | Максимум | MAX(salary) FROM employees |
| MIN(col) | Мінімум | MIN(created_at) FROM posts |
Аналіз даних
-- Статистика по всій таблиці
SELECT
COUNT(*) AS total_orders,
SUM(amount) AS total_revenue,
AVG(amount) AS avg_order,
MAX(amount) AS biggest_order,
MIN(amount) AS smallest_order
FROM orders;
COUNT(*) лічить всі рядки, включаючи NULL.
Тимчасова назва для колонки у SELECT результатах.
Аналогія: Як прізвисько: реальне ім'я = колонка, прізвисько = AS
Зробляємо результати зрозумілішими
SELECT
id AS user_id,
first_name || ' ' || last_name AS full_name,
email AS contact_email,
price * quantity AS total_spent
FROM users;
Функція без правильного синтаксису
SELECT name, length(name) FROM users; -- lowercase
Деякі БД чутливі до регістру функцій
SELECT name, LENGTH(name) FROM users; -- UPPERCASE
Явно UPPERCASE для портативності
Від простих до складних
Базові COUNT, SUM, AVG
Рядкові та математичні
Віконні функції
JSON, XML, AI функції
Кілька функцій разом
SELECT
COUNT(*) AS total_users,
ROUND(AVG(age), 1) AS avg_age,
MAX(created_at) AS newest_user,
MIN(created_at) AS oldest_user,
UPPER(SUBSTR(country, 1, 2)) AS country_code
FROM users
WHERE active = true;
Далі — WHERE для фільтрації
Лекція 8: WHERE Filtering
Дякую за увагу! 💾