Що таке SQL: основи для початківців з прикладами
Ви відкриваєте вакансію дата-аналітика — і в кожній другій бачите вимогу «SQL». Ви хочете витягнути дані про продажі з бази компанії — і знову впираєтесь у SQL. Без цієї мови робота з даними зводиться до нескінченних Excel-файлів, які хтось має вам вивантажити.

Добра новина: SQL — одна з найпростіших мов для старту. Базові запити ви навчитеся писати вже сьогодні, за один урок. Це урок 1 безкоштовного курсу аналітики даних від SEOWORK: далі на вас чекають JOIN, групування, віконні функції та Power BI.
У цьому уроці ви дізнаєтеся, що таке база даних і СУБД, установите MySQL і напишете перші запити: SELECT, WHERE з умовами AND/OR та IN/NOT IN, сортування ORDER BY і обмеження LIMIT. Усі приклади — на демо-базі інтернет-магазину, яку ми використовуватимемо впродовж усього курсу. Її можна завантажити одним файлом і підняти локально: демо-база (SQL-дамп для MySQL 8.0+) — чотири таблиці customers, products, orders, order_items з тестовими даними.
Що таке SQL простими словами
SQL (Structured Query Language) — це мова структурованих запитів, якою ви «спілкуєтеся» з базами даних: просите показати, додати, змінити або видалити дані. Ви описуєте, що хочете отримати, а система сама вирішує, як це зробити.
Порівняйте з людською мовою. Фраза «покажи мені всі замовлення з Києва за суму понад 1000 грн» у SQL виглядає майже так само — лише англійськими ключовими словами. Саме тому SQL вважають найдружнішою до початківців мовою у сфері даних.
SQL — стандарт, який підтримують усі популярні реляційні бази: MySQL, PostgreSQL, SQL Server, Oracle, SQLite. Синтаксис базових запитів у них практично однаковий, тож вивчивши SQL один раз, ви зможете працювати з будь-якою з цих систем.
База даних і СУБД: у чому різниця
База даних (БД) — це впорядковане сховище інформації. У реляційній БД дані лежать у таблицях, схожих на аркуші Excel: рядки — це записи (наприклад, окремі замовлення), стовпці — атрибути (дата, сума, статус).
СУБД (система управління базами даних) — це програма, яка керує цим сховищем: зберігає файли на диску, виконує ваші SQL-запити, розмежовує доступ і стежить за цілісністю даних. MySQL, PostgreSQL і SQL Server — це саме СУБД.
Проста аналогія: база даних — це бібліотека з книжками, а СУБД — бібліотекар, який за вашим запитом знаходить потрібну книжку, ставить нові на полиці та не пускає сторонніх у сховище.
Установка MySQL: що потрібно для практики
Для курсу ми використовуємо MySQL — безкоштовну СУБД з відкритим кодом, одну з найпоширеніших у вебі. Установити її можна за 10–15 хвилин:
- Завантажте MySQL Community Server з офіційного сайту dev.mysql.com (розділ Downloads) для Windows, macOS або Linux.
- Під час установки задайте пароль користувача
root— і обов’язково запишіть його. - Установіть MySQL Workbench — графічний клієнт, у якому зручно писати запити й переглядати таблиці. На Windows він входить до пакета MySQL Installer.
- Відкрийте Workbench, підключіться до локального сервера (localhost, порт 3306) — і можна працювати.
Не хочете нічого встановлювати? Скористайтеся онлайн-пісочницями на кшталт DB Fiddle або sqliteonline.com: обираєте діалект MySQL у браузері й одразу виконуєте запити з цього уроку.
Демо-база «магазин»: таблиці, з якими працюємо
Усі приклади курсу побудовані на базі даних невеликого інтернет-магазину з чотирьох таблиць:
| Таблиця | Стовпці | Що зберігає |
|---|---|---|
customers | id, name, city, created_at | Клієнти: ім’я, місто, дата реєстрації |
orders | id, customer_id, order_date, amount, status | Замовлення: хто, коли, на яку суму, статус |
products | id, name, category, price | Товари: назва, категорія, ціна |
order_items | order_id, product_id, qty | Позиції замовлення: який товар і в якій кількості |
Зверніть увагу на стовпець customer_id у таблиці orders: він посилається на id з таблиці customers. Так таблиці «знають» одна про одну — детально ці зв’язки ми розберемо в уроці про JOIN.
Оператор SELECT: ваш перший SQL-запит
Оператор SELECT — головна команда аналітика: вона читає дані з таблиці. Мінімальний запит складається з двох частин: що вибрати (список стовпців) і звідки (FROM + назва таблиці).
-- Усі стовпці й усі рядки таблиці замовлень
SELECT *
FROM orders;Зірочка * означає «всі стовпці». На практиці краще перелічувати лише потрібні — так запит працює швидше, а результат легше читати:
-- Тільки дата й сума кожного замовлення
SELECT order_date, amount
FROM orders;Стовпцям можна давати зрозумілі імена через ключове слово AS (аліас):
SELECT order_date AS data_zamovlennia,
amount AS suma
FROM orders;Регістр ключових слів значення не має: select і SELECT працюють однаково. Але за традицією ключові слова пишуть ВЕЛИКИМИ літерами — так запит легше читати. Крапка з комою в кінці завершує запит.
WHERE: фільтруємо рядки за умовою
SELECT без фільтра повертає всі рядки таблиці. Щоб відібрати лише потрібні, додайте умову WHERE:
-- Замовлення на суму понад 1000
SELECT id, order_date, amount
FROM orders
WHERE amount > 1000;В умовах працюють звичні оператори порівняння:
| Оператор | Значення | Приклад |
|---|---|---|
= | дорівнює | status = 'paid' |
<> або != | не дорівнює | city <> 'Київ' |
> / < | більше / менше | amount > 1000 |
>= / <= | більше-дорівнює / менше-дорівнює | price <= 500 |
BETWEEN | у діапазоні (включно) | amount BETWEEN 500 AND 1000 |
LIKE | збіг за шаблоном | name LIKE 'А%' |
Важлива деталь: текстові значення й дати беруть в одинарні лапки ('paid', '2024-05-01'), а числа пишуть без лапок.
AND і OR: комбінуємо умови
Кілька умов об’єднують логічними операторами. AND вимагає, щоб виконувались обидві умови, OR — хоча б одна:
-- Оплачені замовлення на суму від 1000
SELECT id, order_date, amount, status
FROM orders
WHERE status = 'paid' AND amount >= 1000;
-- Клієнти з Києва або Львова
SELECT name, city
FROM customers
WHERE city = 'Київ' OR city = 'Львів';Коли змішуєте AND і OR в одному запиті, ставте дужки: AND має вищий пріоритет, і без дужок логіка може відпрацювати не так, як ви задумали:
-- Оплачені або доставлені замовлення від 1000 грн
SELECT id, amount, status
FROM orders
WHERE (status = 'paid' OR status = 'delivered')
AND amount >= 1000;IN і NOT IN: перевірка за списком
Довгий ланцюжок OR за одним стовпцем зручно замінити оператором IN — «значення входить у список»:
-- Те саме, що city = 'Київ' OR city = 'Львів' OR city = 'Одеса'
SELECT name, city
FROM customers
WHERE city IN ('Київ', 'Львів', 'Одеса');NOT IN працює навпаки — відкидає рядки зі значеннями зі списку:
-- Товари з усіх категорій, крім аксесуарів і послуг
SELECT name, category, price
FROM products
WHERE category NOT IN ('Аксесуари', 'Послуги');ORDER BY: сортуємо результат
Без сортування СУБД повертає рядки в довільному порядку. ORDER BY упорядковує результат за одним або кількома стовпцями. За замовчуванням — за зростанням (ASC), для спадання додайте DESC:
-- Найдорожчі замовлення згори
SELECT id, order_date, amount
FROM orders
ORDER BY amount DESC;Можна сортувати за кількома стовпцями одночасно — спочатку за першим, а в межах однакових значень за другим:
-- Товари за категорією (А→Я), усередині категорії — від дорогих до дешевих
SELECT name, category, price
FROM products
ORDER BY category ASC, price DESC;LIMIT: обмежуємо кількість рядків
LIMIT каже СУБД повернути лише перші N рядків результату. У парі з ORDER BY це класичний спосіб знайти «топ» будь-чого:
-- Топ-5 найбільших замовлень
SELECT id, customer_id, amount
FROM orders
ORDER BY amount DESC
LIMIT 5;У формі LIMIT зсув, кількість перше число — це зсув (скільки рядків пропустити), а друге — скільки рядків повернути. Той самий запис можна зробити явним: LIMIT кількість OFFSET зсув. Наприклад, LIMIT 10, 20 (пропустити 10, взяти 20) рівнозначне LIMIT 20 OFFSET 10. Так роблять посторінковий вивід. І практична порада: коли досліджуєте незнайому велику таблицю, завжди починайте з LIMIT 10, щоб не тягнути мільйони рядків даремно.
Підсумковий запит уроку — все разом:
-- Топ-10 оплачених або доставлених замовлень 2024 року на суму від 500
SELECT id, order_date, amount, status
FROM orders
WHERE status IN ('paid', 'delivered')
AND amount >= 500
AND order_date BETWEEN '2024-01-01' AND '2024-12-31'
ORDER BY amount DESC
LIMIT 10;Зверніть увагу на порядок частин запиту: SELECT → FROM → WHERE → ORDER BY → LIMIT. Він фіксований — переставляти блоки місцями не можна.
Поширені помилки початківців
- Текст без лапок.
WHERE status = paidвикличе помилку — MySQL шукатиме стовпецьpaid. Правильно:status = 'paid'. - Кома перед FROM. Зайва кома після останнього стовпця (
SELECT id, amount, FROM orders) ламає запит. Перевіряйте кінець списку стовпців. - AND та OR без дужок. Через вищий пріоритет AND умова
WHERE city = 'Київ' OR city = 'Львів' AND amount > 1000відфільтрує зовсім не те, що ви очікуєте. Групуйте OR у дужки. - SELECT * на великих таблицях. Запит без списку стовпців і без LIMIT на таблиці з мільйонами рядків надовго «підвісить» клієнт. Вибирайте лише потрібні стовпці.
- Порівняння з NULL через «=». Порожні значення перевіряють конструкцією
IS NULL/IS NOT NULL, а не= NULL— інакше умова ніколи не спрацює. Пам’ятайте також, щоNOT INзі списком, у якому трапився NULL, не поверне жодного рядка.
FAQ: часті питання про SQL
Чи важко вивчити SQL з нуля?
Ні. Базові запити — SELECT, WHERE, ORDER BY — реально освоїти за кілька вечорів практики. Синтаксис близький до звичайної англійської, а результат кожного запиту видно одразу. На впевнений робочий рівень (JOIN, групування, підзапити) зазвичай потрібно кілька тижнів регулярних вправ.
SQL — це мова програмування?
SQL — декларативна мова запитів: ви описуєте бажаний результат, а не покрокові інструкції, як у Python чи JavaScript. Циклів і класичних змінних у базовому SQL немає. Утім, у вакансіях і резюме SQL цілком коректно вказувати поряд з мовами програмування — це окрема повноцінна навичка.
Чим MySQL відрізняється від SQL?
SQL — це мова запитів, стандарт. MySQL — конкретна СУБД, тобто програма, яка цю мову розуміє й виконує. Аналогічно PostgreSQL, SQL Server і Oracle — інші СУБД зі своїми діалектами SQL. Базові конструкції з цього уроку працюють у всіх них однаково.
Чи потрібен SQL, якщо я планую працювати в Power BI?
Так, і дуже. Power BI найчастіше підключається саме до реляційних баз даних, і вміння написати запит, який віддасть лише потрібні дані, робить звіти швидшими й простішими. У другій половині нашого курсу ви побачите зв’язку SQL + Power BI на практиці.
Що далі
Ви вже вмієте головне: діставати дані з таблиці, фільтрувати їх за умовами, сортувати й обмежувати вибірку. Потренуйтеся на демо-базі — складіть власні запити до таблиць customers і products, комбінуючи WHERE, IN, ORDER BY і LIMIT.
Наступний крок — навчитися поєднувати кілька таблиць в одному запиті, адже відповіді на реальні бізнес-питання майже завжди «розкидані» по різних таблицях. Про це — урок 2: SQL JOIN — як поєднати таблиці (INNER, LEFT, RIGHT).
Повний план навчання, усі 9 уроків і порядок проходження — на сторінці курсу аналітики даних з нуля.
Це урок 1 з 9 курсу аналітики даних.
Уроки виходять щодня о 09:30 — програма і навігація на сторінці курсу.