🗄️ SQL-запити

Шпаргалка: SQL-запити

SELECT, JOIN-и, агрегатні функції, GROUP BY/HAVING, підзапити та модифікація даних — повна довідка для аналізу даних

Базовий SELECT

SELECT column1, column2 FROM table WHERE condition;
Усі стовпці
SELECT * FROM users;
Конкретні стовпці
SELECT name, email FROM users;
З умовою
SELECT * FROM users WHERE age >= 18;
Унікальні значення
SELECT DISTINCT city FROM users;
✦ WHERE фільтрує окремі рядки ДО будь-якого групування — це базовий фільтр вибірки.

Сортування та обмеження

SELECT * FROM table ORDER BY column ASC|DESC;
SELECT * FROM table ORDER BY column DESC LIMIT n;
Ключове словоПризначення
ORDER BY column ASCСортування за зростанням (за замовчуванням)
ORDER BY column DESCСортування за спаданням
LIMIT nОбмежити результат n рядками
ORDER BY a, b DESCСортування за кількома стовпцями (a за зростанням, b за спаданням)
✦ Приклад: SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 5; — топ-5 працівників за зарплатою.

Агрегатні функції: GROUP BY та HAVING

Кількість рядків
COUNT(*)
Сума значень
SUM(column)
Середнє значення
AVG(column)
Мінімум
MIN(column)
Максимум
MAX(column)
Групування
GROUP BY column
SELECT department, COUNT(*), AVG(salary) FROM employees GROUP BY department;
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;
✦ Ключова відмінність: WHERE фільтрує рядки ДО групування і не може містити агрегатні функції; HAVING фільтрує вже згруповані результати ПІСЛЯ обчислення агрегатів (COUNT, SUM, AVG тощо).

JOIN-и: об'єднання таблиць

Тип JOINЩо повертає
INNER JOINЛише рядки, для яких є відповідність в ОБОХ таблицях
LEFT JOINУсі рядки лівої таблиці + відповідні рядки правої (NULL, якщо відповідності немає)
RIGHT JOINУсі рядки правої таблиці + відповідні рядки лівої (NULL, якщо відповідності немає)
FULL OUTER JOINУсі рядки з обох таблиць; NULL там, де немає відповідності з іншого боку
SELECT o.id, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id;
SELECT c.name, o.id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id;
✦ LEFT JOIN зручний, щоб знайти рядки без пари: додайте WHERE o.id IS NULL, щоб знайти клієнтів без замовлень.

Підзапити (subqueries)

SELECT name FROM employees WHERE department_id IN (SELECT id FROM departments WHERE location = 'Kyiv');
SELECT name FROM products WHERE price > (SELECT AVG(price) FROM products);
✦ Підзапит у WHERE...IN виконується першим і повертає список значень, які потім використовує зовнішній запит.

Модифікація даних: INSERT, UPDATE, DELETE

INSERT INTO table (column1, column2) VALUES (value1, value2);
UPDATE table SET column1 = value1 WHERE condition;
DELETE FROM table WHERE condition;
⚠ Якщо пропустити WHERE в UPDATE або DELETE, зміна або видалення застосується до ВСІХ рядків таблиці без винятку. Перед виконанням завжди перевіряйте умову окремим запитом SELECT * FROM table WHERE condition;

Оператори порівняння

ОператорЗначення
=Дорівнює
<> (або !=)Не дорівнює
>Більше
<Менше
>=Більше або дорівнює
<=Менше або дорівнює
LIKEВідповідність шаблону (%, _)
INЗначення входить у список
BETWEEN a AND bЗначення в діапазоні [a, b]
IS NULL / IS NOT NULLПеревірка на відсутність/наявність значення
✦ NULL — це «невідоме значення»: вираз column = NULL завжди повертає NULL (не true), тому рядок не потрапить у вибірку. Для перевірки використовуйте лише IS NULL або IS NOT NULL.

Як користуватися шпаргалкою

Ця шпаргалка зосереджує найважливіші конструкції SQL — від базового SELECT до JOIN-ів, підзапитів та модифікації даних — у компактному форматі для швидкого пошуку під час написання запитів. Матеріал систематизований від простих вибірок до складніших операцій з кількома таблицями.

Ефективне використання

Використовуйте шпаргалку поряд із практикою написання запитів у реальній базі даних — не для копіювання, а як довідник синтаксису. Перед UPDATE або DELETE завжди спершу перевіряйте умову WHERE через SELECT з тими самими критеріями, щоб уникнути випадкових змін усієї таблиці.

Часті запитання (FAQ)

Для чого використовується мова SQL?
SQL (Structured Query Language) — мова для роботи з реляційними базами даних: вибірка даних (SELECT), додавання (INSERT), оновлення (UPDATE) та видалення (DELETE) записів, а також створення й зміна структури таблиць. Використовується в аналітиці даних, веб-розробці та адмініструванні баз даних.
У чому різниця між WHERE та HAVING?
WHERE фільтрує окремі рядки ДО групування (GROUP BY) і не може використовувати агрегатні функції. HAVING фільтрує вже згруповані результати ПІСЛЯ обчислення агрегатних функцій (COUNT, SUM, AVG тощо). Тобто WHERE відсіює рядки, а HAVING — цілі групи.
Чим відрізняється INNER JOIN від LEFT JOIN?
INNER JOIN повертає лише ті рядки, для яких є відповідність в обох таблицях. LEFT JOIN повертає всі рядки лівої таблиці, а для тих, де немає відповідності у правій таблиці, поля правої таблиці заповнюються NULL.
Чому для порівняння з NULL потрібні спеціальні оператори?
NULL означає 'невідоме значення', тому будь-яке порівняння з ним (наприклад, column = NULL) повертає NULL (не true і не false) і рядок не потрапляє у вибірку. Щоб перевірити наявність або відсутність значення, потрібно використовувати спеціальні оператори IS NULL або IS NOT NULL.
Чому важливо завжди використовувати WHERE з UPDATE та DELETE?
Якщо в запиті UPDATE або DELETE пропустити умову WHERE, операція застосується до ВСІХ рядків таблиці без винятку. Це найпоширеніша причина випадкового знищення або зіпсування даних, тому перед виконанням варто спершу перевірити умову WHERE через SELECT з тими самими критеріями.