SQL для начинающих: что это, зачем нужен и как выучить SQL с нуля
SQL (Structured Query Language, «язык структурированных запросов») — это язык, на котором люди и программы общаются с базами данных: просят найти, отфильтровать, посчитать и объединить данные, лежащие в таблицах. Если вы хоть раз спрашивали себя «сколько заказов мы получили из Киева в марте», то у этого вопроса есть точный перевод на SQL — и он занимает четыре строки.
В этой статье разберём SQL с нуля на одном сквозном примере интернет-магазина: что такое база данных и таблицы, как выглядит запрос, какие команды нужны новичку, как связываются таблицы через JOIN, чем SQL отличается от Excel и Python, сколько времени занимает обучение и в каком порядке двигаться. В конце — небольшое практическое задание и ответ на вопрос, есть ли смысл учить SQL, когда запросы умеет писать AI.
Коротко. SQL нужен всем, кто работает с данными: аналитикам, тестировщикам, разработчикам, маркетологам и продакт-менеджерам. Для аналитика данных это первый профессиональный инструмент — обязательнее, чем Python. Базовый SQL осваивается за несколько недель регулярной практики, а не за «7 дней по видеокурсу».
Хотите научиться работать с данными профессионально?
SQL — только один из инструментов аналитика. На курсе Data Analytics в Prog Academy вы пройдёте путь от Power BI и SQL до Python, AI-инструментов и дипломного проекта для портфолио — за 5 месяцев по программе, аккредитованной в ЕС.
Записаться на курс Data Analytics →Что такое SQL?
SQL — это язык запросов к реляционным базам данных. Вы описываете, какие данные хотите получить, а система управления базой данных (СУБД) сама решает, как их найти, и возвращает результат в виде таблицы. SQL не является программой, приложением или базой данных — это именно язык, у которого есть международный стандарт.
Чтобы понять, где живёт SQL, достаточно пяти понятий:
| Понятие | Что это | Пример из интернет-магазина |
|---|---|---|
| База данных | Организованное хранилище данных, которым управляет СУБД | База магазина: всё о клиентах, товарах и заказах |
| Таблица | Набор данных одного типа, похожий на лист Excel | orders — заказы, customers — клиенты |
| Строка (запись) | Один объект в таблице | Один конкретный заказ |
| Столбец (поле) | Одна характеристика объекта, у которой есть тип данных | amount — сумма заказа, число |
| Запрос | Инструкция на SQL, которую выполняет СУБД | «Покажи все заказы из Киева дороже 1000» |
Цепочка выглядит так: база данных → таблицы → строки и столбцы → SQL-запрос → результат. Результат запроса — это тоже таблица, поэтому его можно сохранить, передать в отчёт, открыть в Excel или отдать программе.
Важное различие, которое путают почти все новички: SQL — это язык, а PostgreSQL, MySQL, SQL Server, Oracle и SQLite — это системы управления базами данных, которые этот язык понимают. Каждая СУБД говорит на своём диалекте SQL с небольшими отличиями, но основа — SELECT, WHERE, JOIN, GROUP BY — везде одна и та же. Выучив SQL в одной системе, вы за несколько дней освоитесь в любой другой.
Немного истории, чтобы понимать масштаб: реляционная модель данных была описана в IBM в 1970 году, первая версия языка появилась там же в середине 1970-х, а в 1986 году SQL стал стандартом ANSI, годом позже — ISO. Языку почти пятьдесят лет, и он по-прежнему один из самых используемых в мире: по данным Stack Overflow Developer Survey 2025, SQL применяют 58,6% опрошенных разработчиков — третье место после JavaScript и HTML/CSS, выше Python. Базы данных с тех пор поменялись, а способ задавать им вопросы — нет.
Как работает SQL: пример интернет-магазина
SQL-запрос — это бизнес-вопрос, переведённый на формальный язык. Вы формулируете, что хотите узнать, записываете это в виде запроса, СУБД выполняет его над таблицами и возвращает результат. Весь дальнейший текст построен на одном примере, чтобы каждая новая команда добавляла что-то к уже знакомой картине.
Представим интернет-магазин с таблицей заказов orders:
| id | customer | city | amount |
|---|---|---|---|
| 1 | Anna | Kyiv | 1200 |
| 2 | Maksym | Lviv | 850 |
| 3 | Olena | Kyiv | 2100 |
| 4 | Iryna | Odesa | 640 |
| 5 | Anna | Kyiv | 300 |
Руководитель спрашивает: «Покажи все заказы из Киева на сумму больше 1000». На SQL это выглядит так:
SELECT customer, amount
FROM orders
WHERE city = 'Kyiv'
AND amount > 1000;
Результат:
| customer | amount |
|---|---|
| Anna | 1200 |
| Olena | 2100 |
SELECT customer, amount
FROM orders
WHERE city = 'Kyiv'
AND amount > 1000;
orders, проверяет каждую строку по условиямРазберём запрос по строкам, потому что в нём уже три ключевых слова, с которых начинается любой SQL:
SELECT customer, amount— какие столбцы показать. Мы просим только имя клиента и сумму, хотя в таблице есть ещёidиcity.FROM orders— из какой таблицы брать данные.WHERE city = 'Kyiv' AND amount > 1000— какие строки оставить. Условие проверяется для каждой строки; строки, которые ему не соответствуют, в результат не попадают. Текстовые значения пишутся в одинарных кавычках, числа — без.
Обратите внимание: мы нигде не объясняли базе, как искать — не писали цикл по строкам, не сравнивали значения вручную. Мы описали результат, а способ его получить СУБД выбрала сама. В этом главное отличие SQL от языков программирования вроде Python или Java, и именно поэтому SQL осваивают люди без опыта в разработке.
Для чего нужен SQL и где он используется?
SQL нужен, чтобы получать ответы из данных, которые хранятся в базе: находить, фильтровать, считать, объединять и изменять их. Практически любая компания хранит рабочие данные в реляционной базе, а значит, любой отчёт, дашборд, проверка или интеграция начинаются с SQL-запроса.
Где SQL применяется на практике:
- Аналитика данных — ответы на вопросы бизнеса: сколько продали, кто купил, что изменилось по сравнению с прошлым месяцем.
- BI и отчётность — Power BI, Tableau и Looker получают данные из баз через SQL-запросы, даже если аналитик собирает дашборд мышкой.
- Backend-разработка — приложение сохраняет пользователей, заказы и платежи в базу и читает их оттуда; каждое такое действие — SQL.
- E-commerce — каталог товаров, корзины, остатки на складе, история заказов.
- CRM и продажи — клиенты, сделки, воронка, отчёты по менеджерам.
- Финтех и банки — транзакции, балансы, сверки, антифрод-проверки.
- Продуктовая аналитика — события в приложении: кто дошёл до оплаты, где отваливаются пользователи, как ведут себя когорты.
- Маркетинговая аналитика — эффективность кампаний, стоимость привлечения, атрибуция.
- QA и тестирование — проверить, что после нажатия кнопки в базе появилась правильная запись, а не только сообщение на экране.
- Data Engineering — построение витрин данных и пайплайнов, где SQL — основной рабочий язык.
Общее у всех сценариев одно: данные структурированы, их много, и к ним регулярно задают повторяющиеся вопросы. Там, где данные помещаются в один файл и нужны один раз, хватит Excel. Там, где они живут в базе и вопросы задают каждый день, нужен SQL.
Кому нужно знать SQL?
SQL нужен всем, чья работа связана с данными в базе: от аналитиков и тестировщиков до разработчиков и администраторов баз данных. Отличается только глубина: одним хватает SELECT с фильтрами и JOIN, другим нужны оконные функции, оптимизация запросов и проектирование схемы.
| Профессия | Как использует SQL | Требуемая глубина |
|---|---|---|
| Data Analyst | Выгрузки для отчётов, ответы на вопросы бизнеса, подготовка данных для дашбордов | Уверенная: JOIN, GROUP BY, подзапросы, CTE, оконные функции |
| BI Analyst | Витрины данных для Power BI / Tableau, расчёт метрик, проверка цифр в отчётах | Уверенная, плюс понимание моделей данных |
| Product Analyst | Воронки, когорты, A/B-тесты по событиям из продукта | Уверенная, с акцентом на оконные функции и работу с датами |
| Data Scientist | Сбор и подготовка выборок для моделей | Средняя: выборки, агрегации, JOIN; остальное — в Python |
| Backend Developer | Чтение и запись данных приложения, проектирование таблиц, индексы | Уверенная, плюс транзакции и производительность |
| Data Engineer | Пайплайны, трансформации, витрины, оптимизация тяжёлых запросов | Глубокая |
| QA Engineer | Проверка данных в базе после действий в интерфейсе, подготовка тестовых данных | Базовая: SELECT, WHERE, JOIN, простые агрегации |
| QA Automation Engineer | Автотесты, которые сверяют состояние базы с ожидаемым | Базовая–средняя |
| DBA (администратор БД) | Настройка, резервное копирование, безопасность, производительность СУБД | Экспертная, включая внутреннее устройство конкретной СУБД |
Есть и роли, где SQL не значится в требованиях, но сильно помогает: маркетологи, продакт-менеджеры и финансисты, умеющие сами написать запрос, не ждут аналитика по каждому вопросу и быстрее проверяют гипотезы.
Нужен ли SQL аналитику данных?
Да, SQL — базовое требование практически в каждой вакансии аналитика данных, часто более обязательное, чем Python. Данные компании лежат в базе, и путь аналитика к любому отчёту начинается с запроса, а не с CSV-файла. Ошибка в JOIN или в условии фильтра означает неверные цифры в отчёте, поэтому от аналитика ждут не «знакомства с SQL», а умения написать корректный запрос к незнакомой базе и проверить результат. Цифры это подтверждают: в исследовании 365 Data Science по 855 вакансиям аналитика данных на Indeed (апрель 2026) SQL упоминается в 52,9% объявлений — чаще, чем Excel (50,5%) и Python (31,2%).
При этом SQL — только один из инструментов аналитика. В реальной работе он соседствует с Excel, BI-системой и Python: запросом достают данные, в Power BI строят дашборд, в Python — чистят и считают то, что в SQL делать неудобно. Поэтому на курсе Data Analytics в Prog Academy SQL изучается в контексте задач аналитика — как звено между базой данных и отчётом, а не как отдельный «язык ради языка». Подробнее о самой профессии и её инструментах — в статье профессия аналитик данных: чем занимается и как им стать.
Основы баз данных: таблицы, ключи и связи
Реляционная база данных — это набор таблиц, связанных между собой через ключи. Каждая таблица описывает один тип объектов (клиенты, заказы, товары), а связи между таблицами позволяют не дублировать данные и при этом собирать их вместе в одном запросе.
Наша таблица orders выше удобна для первых запросов, но в реальной базе так не хранят. Если Anna сделает сто заказов, её имя и город запишутся сто раз, а при переезде придётся править сто строк. Поэтому данные раскладывают по таблицам, каждая — о своём:
Таблица customers:
| id | name | city |
|---|---|---|
| 1 | Anna | Kyiv |
| 2 | Maksym | Lviv |
| 3 | Olena | Kyiv |
| 4 | Iryna | Odesa |
| 5 | Taras | Kharkiv |
Таблица orders:
| id | customer_id | amount | order_date |
|---|---|---|---|
| 1 | 1 | 1200 | 2026-03-02 |
| 2 | 2 | 850 | 2026-03-03 |
| 3 | 3 | 2100 | 2026-03-05 |
| 4 | 4 | 640 | 2026-03-09 |
| 5 | 1 | 300 | 2026-03-12 |
Здесь работают три понятия, без которых не понять JOIN:
- Первичный ключ (primary key) — столбец, который однозначно определяет строку. У каждого клиента свой
id, у каждого заказа — свой. Два клиента с одинаковымidневозможны. - Внешний ключ (foreign key) — столбец, который ссылается на первичный ключ другой таблицы.
customer_idв заказах указывает наidв клиентах: заказ №5 сcustomer_id = 1сделала Anna. - Связь (relationship) — правило, по которому таблицы соединяются. У одного клиента может быть много заказов, а у заказа — ровно один клиент. Это связь «один ко многим», самая частая в базах данных.
Таблица products с товарами и таблица позиций заказа устроены по тому же принципу. Когда вы понимаете, какой столбец на какой ссылается, вы понимаете структуру базы — а это половина успеха в SQL.
PostgreSQL, MySQL, SQL Server, Oracle и SQLite: что это
Все эти системы — СУБД, которые хранят таблицы и выполняют SQL-запросы. Для новичка достаточно знать, чем они отличаются на уровне «кто и зачем их использует»:
- PostgreSQL — бесплатная СУБД с открытым исходным кодом, максимально близкая к стандарту SQL. Популярна в аналитике, стартапах и продуктовых компаниях.
- MySQL — бесплатная открытая СУБД, долгое время стандарт для веб-проектов: на ней работают WordPress и множество интернет-магазинов. Близкий родственник — MariaDB.
- SQL Server — коммерческая СУБД Microsoft, распространена в корпоративной среде и тесно интегрирована с Power BI и Excel. Диалект называется T-SQL.
- Oracle Database — коммерческая СУБД для крупных предприятий: банки, телеком, госсектор. Диалект — PL/SQL.
- SQLite — крошечная база, которая хранится в одном файле и не требует сервера. Встроена в браузеры и мобильные приложения, удобна для обучения и небольших проектов.
Подробнее сравним их ниже, а пока главное: SQL, который вы выучите на примерах из этой статьи, работает во всех пяти.
Основные команды SQL для начинающих
Новичку нужно не «выучить все команды SQL», а освоить три группы: выборку данных, агрегацию и изменение данных. Этого хватает для большинства задач аналитика и тестировщика, а всё остальное — надстройки над этой базой.
Выборка данных: SELECT, FROM, WHERE, ORDER BY, LIMIT, DISTINCT
Это команды, с которых начинается любой запрос. Возвращаемся к простой таблице orders с именем и городом в каждой строке.
Все столбцы и все строки. Звёздочка означает «все столбцы»:
SELECT *
FROM orders;
Сортировка. ORDER BY упорядочивает результат; DESC — по убыванию, ASC (по умолчанию) — по возрастанию:
SELECT customer, amount
FROM orders
ORDER BY amount DESC;
Ограничение количества строк. LIMIT оставляет только первые N строк — в паре с сортировкой это даёт «топ-3 заказа»:
SELECT customer, amount
FROM orders
ORDER BY amount DESC
LIMIT 3;
Результат: Olena — 2100, Anna — 1200, Maksym — 850. В SQL Server вместо LIMIT 3 пишут SELECT TOP 3, в Oracle — FETCH FIRST 3 ROWS ONLY. Это как раз пример различий между диалектами: смысл тот же, синтаксис чуть другой.
Уникальные значения. DISTINCT убирает повторы:
SELECT DISTINCT city
FROM orders;
Результат: Kyiv, Lviv, Odesa — три города, хотя Kyiv встречается в трёх строках.
Условия в WHERE. Помимо =, >, < и AND, чаще всего нужны: OR (любое из условий), IN ('Kyiv', 'Lviv') (значение из списка), BETWEEN 500 AND 1000 (диапазон), LIKE 'A%' (текст по шаблону: имена, начинающиеся на A) и IS NULL (пустое значение). NULL — особая отметка «значения нет», и сравнивать с ней через = нельзя, только через IS NULL / IS NOT NULL.
Агрегация: COUNT, SUM, AVG, GROUP BY, HAVING
Агрегатные функции сворачивают много строк в одно число. Это тот момент, когда SQL превращается из «поиска строк» в инструмент аналитики.
Сколько заказов, на какую сумму, какой средний чек:
SELECT COUNT(*) AS orders_count,
SUM(amount) AS revenue,
AVG(amount) AS avg_check
FROM orders;
Результат: 5 заказов, выручка 5090, средний чек 1018. Слово AS задаёт имя столбцу в результате — без него заголовок будет техническим и малопонятным.
То же самое, но по городам. GROUP BY разбивает строки на группы, и агрегатные функции считаются внутри каждой:
SELECT city,
COUNT(*) AS orders_count,
SUM(amount) AS revenue
FROM orders
GROUP BY city
ORDER BY revenue DESC;
| city | orders_count | revenue |
|---|---|---|
| Kyiv | 3 | 3600 |
| Lviv | 1 | 850 |
| Odesa | 1 | 640 |
Фильтр по результату группировки. WHERE отбирает строки до группировки, а HAVING — группы после. «Города с выручкой больше 1000»:
SELECT city, SUM(amount) AS revenue
FROM orders
GROUP BY city
HAVING SUM(amount) > 1000;
Результат: только Kyiv. Написать WHERE SUM(amount) > 1000 нельзя — в момент проверки WHERE суммы ещё не посчитаны. Это одна из самых частых ошибок новичков, и она объясняется порядком, в котором СУБД обрабатывает запрос: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Запрос пишется сверху вниз, а выполняется в этом логическом порядке, поэтому SELECT с его псевдонимами «видит» результат группировки, а WHERE — нет.
Изменение данных: INSERT, UPDATE, DELETE
Аналитик чаще читает данные, чем меняет, но эти три команды нужно знать хотя бы для того, чтобы создать себе учебную базу.
-- добавить новый заказ
INSERT INTO orders (customer, city, amount)
VALUES ('Taras', 'Kharkiv', 990);
-- изменить сумму заказа №1
UPDATE orders
SET amount = 1250
WHERE id = 1;
-- удалить заказ №5
DELETE FROM orders
WHERE id = 5;
Строки, начинающиеся с --, — комментарии, СУБД их игнорирует. И одно правило, которое стоит запомнить раньше синтаксиса: UPDATE и DELETE без WHERE применяются ко всем строкам таблицы. Команда DELETE FROM orders; удалит все заказы, и в рабочей базе такое заканчивается восстановлением из резервной копии. Перед любым изменением сначала пишут SELECT с тем же условием и смотрят, какие строки попадут под него.
JOIN: как объединять таблицы
JOIN соединяет строки двух таблиц по совпадающим значениям ключей, превращая несколько таблиц в одну таблицу-результат. Это главный концептуальный порог в SQL: до него вы работаете с одной таблицей, после — со всей базой.
Вернёмся к «правильной» структуре, где имена лежат в customers, а суммы — в orders. Вопрос: «Кто из клиентов сколько заказал?» Ответить из одной таблицы нельзя: в заказах нет имён, в клиентах нет сумм. Но у таблиц есть общий ключ — orders.customer_id ссылается на customers.id. По нему и соединяем:
SELECT customers.name,
customers.city,
orders.amount
FROM orders
JOIN customers ON orders.customer_id = customers.id;
| id | name | city |
|---|---|---|
| 1 | Anna | Kyiv |
| 2 | Maksym | Lviv |
| 3 | Olena | Kyiv |
| 4 | Iryna | Odesa |
| 5 | Taras | Kharkiv |
orders.customer_id = customers.id| id | customer_id | amount |
|---|---|---|
| 1 | 1 | 1200 |
| 2 | 2 | 850 |
| 3 | 3 | 2100 |
| 4 | 4 | 640 |
| 5 | 1 | 300 |
| name | city | amount |
|---|---|---|
| Anna | Kyiv | 1200 |
| Maksym | Lviv | 850 |
| Olena | Kyiv | 2100 |
| Iryna | Odesa | 640 |
| Anna | Kyiv | 300 |
Что произошло: СУБД взяла каждую строку из orders, нашла в customers строку с таким же id, как customer_id заказа, и «приклеила» её сбоку. Заказ №5 с customer_id = 1 получил имя Anna и город Kyiv — так же, как заказ №1. Клиент Taras в результат не попал: у него нет заказов, а JOIN (полное название — INNER JOIN) оставляет только совпадения с обеих сторон.
Дальше к соединённой таблице применяется всё, что вы уже знаете. «Сколько всего заказал каждый клиент»:
SELECT customers.name,
SUM(orders.amount) AS total
FROM orders
JOIN customers ON orders.customer_id = customers.id
GROUP BY customers.name
ORDER BY total DESC;
Результат: Olena — 2100, Anna — 1500, Maksym — 850, Iryna — 640.
Два дополнения, которые понадобятся очень скоро. Во-первых, таблицам дают короткие псевдонимы, чтобы не писать полные имена: FROM orders o JOIN customers c ON o.customer_id = c.id. Во-вторых, если нужны все клиенты, включая тех, у кого заказов нет, используют LEFT JOIN: тогда Taras появится в результате с пустым (NULL) значением в столбце суммы. Это ровно тот запрос, которым ищут «клиентов без покупок».
И одна ловушка, о которой узнают на практике: если условие в ON написано неверно или у таблиц связь «многие ко многим», строки начинают дублироваться и суммы завышаются. Поэтому после каждого JOIN опытные аналитики проверяют количество строк до и после соединения.
SQL или Excel: в чём разница?
Excel — инструмент для ручной работы с таблицей, которая помещается в один файл; SQL — язык запросов к базе, где лежат миллионы строк в десятках связанных таблиц. Они решают разные задачи и в работе аналитика дополняют друг друга, а не конкурируют.
| Критерий | Excel | SQL |
|---|---|---|
| Назначение | Расчёты, сводные таблицы, быстрый разовый анализ, презентация цифр | Получение и подготовка данных из базы, регулярные отчёты |
| Объём данных | Комфортно до сотен тысяч строк; ограничение листа — около миллиона | Миллионы и миллиарды строк, ограничены только сервером |
| Повторяемость | Расчёт часто собирают заново; формулы легко сломать | Запрос сохраняется и выполняется снова одним нажатием |
| Совместная работа | Версии файлов, «отчёт_финал_2.xlsx» | Одна база — один источник правды для всех |
| Автоматизация | Макросы, Power Query | Запросы по расписанию, встроены в BI и приложения |
| Источники данных | Файлы, ручной ввод, подключения через Power Query | Непосредственно база данных приложения или хранилище |
| Анализ | Сводные таблицы, графики, формулы | Фильтры, агрегации, соединения таблиц; графики — в BI |
| Порог входа | Низкий, интерфейс знаком всем | Низкий для базовых запросов, растёт с JOIN и подзапросами |
Типичный рабочий процесс выглядит так: SQL-запросом достают из базы нужный срез, результат открывают в Excel или загружают в Power BI, там считают и оформляют. Если вы хорошо знаете Excel, вам будет проще: сводная таблица — это тот же GROUP BY, а ВПР (VLOOKUP) — упрощённый JOIN. Если Excel пока слабое место, начните с курса Excel или сразу с программы аналитика, где оба инструмента идут в связке.
SQL или Python: что учить первым?
Для аналитики данных обычно начинают с SQL: он проще, быстрее даёт полезный результат и требуется почти в каждой вакансии. Python подключают следом. Для backend-разработки порядок может быть обратным. Универсального ответа «что лучше» нет, потому что языки решают разные задачи.
| Критерий | SQL | Python |
|---|---|---|
| Что делает | Достаёт, фильтрует, объединяет и агрегирует данные в базе | Универсальный язык: обработка данных, статистика, автоматизация, визуализация, машинное обучение |
| Где выполняется | Внутри СУБД, рядом с данными | На вашем компьютере или сервере, данные нужно сначала загрузить |
| Сложность старта | Низкая: первые запросы — за часы | Средняя: нужно освоить синтаксис, типы данных, библиотеки |
| Типичная задача аналитика | «Выручка по городам за март с разбивкой по каналам» | Очистка данных в pandas, прогноз, автоматический отчёт по расписанию |
В реальной работе они соединяются: Python-скрипт отправляет SQL-запрос в базу, получает таблицу и дальше обрабатывает её в pandas. Именно поэтому в вакансиях аналитика обычно указаны оба языка, а в программах обучения SQL и Python идут рядом. Что учить в Python и в каком порядке, мы разбирали в статье Python для анализа данных: с чего начать.
PostgreSQL, MySQL или SQL Server: какую базу выбрать новичку?
Для обучения подойдёт любая из них: базовый SQL в PostgreSQL, MySQL, SQL Server и SQLite практически одинаков, а различия в диалектах осваиваются за несколько дней. Если нет причин выбрать конкретную систему, начните с PostgreSQL или SQLite.
| СУБД | Лицензия | Где чаще всего встречается | Для новичка |
|---|---|---|---|
| PostgreSQL | Открытая, бесплатная | Аналитика, стартапы, продуктовые компании, веб-приложения | Лучший выбор по умолчанию: ближе всего к стандарту, много учебных материалов |
| MySQL / MariaDB | Открытая, бесплатная (у MySQL есть коммерческие редакции) | Веб-проекты, CMS, интернет-магазины | Хороший выбор, если ваша цель — веб-разработка |
| SQL Server | Коммерческая, есть бесплатные редакции Express и Developer | Корпоративный сектор, экосистема Microsoft, Power BI | Логичен, если компания-цель работает на Microsoft; диалект T-SQL |
| Oracle | Коммерческая | Банки, телеком, крупные предприятия | Редко выбирают для старта; изучают под конкретного работодателя |
| SQLite | Открытая, общественное достояние | Мобильные приложения, браузеры, встраиваемые системы | Самый быстрый старт: без сервера и установки, база — один файл |
Если ориентироваться на популярность: в опросе Stack Overflow 2025 PostgreSQL — самая используемая база данных (55,6% респондентов), за ней MySQL, SQLite и SQL Server, а в рейтинге DB-Engines первые четыре места занимают реляционные СУБД: Oracle, MySQL, SQL Server и PostgreSQL. То есть какой бы вариант вы ни выбрали, вы попадёте в мейнстрим.
Практический совет: не тратьте недели на выбор. Установите PostgreSQL (или откройте любую онлайн-песочницу с SQLite), создайте таблицы customers и orders из этой статьи и начните писать запросы. Когда через полгода вам понадобится SQL Server, разница сведётся к TOP вместо LIMIT и нескольким функциям для работы с датами.
Сложно ли выучить SQL?
Старт у SQL один из самых лёгких среди всех языков: базовые запросы читаются почти как английские предложения. Сложность появляется не в синтаксисе, а в структуре данных и в логике соединений. Поэтому SQL осваивают люди без технического бэкграунда — но «выучить за выходные» не получится.
Реалистичная лестница сложности выглядит так:
SELECT,WHERE,ORDER BY— понятны в первый день. Это уровень «достать нужные строки из одной таблицы».GROUP BYи агрегации — требуют понять, что такое группа и почемуHAVINGотличается отWHERE. Обычно щёлкает за неделю практики.JOIN— первый настоящий порог. Нужно держать в голове две таблицы, ключи и понимать, почему строки дублируются или пропадают. Несколько недель на то, чтобы перестать бояться.- Подзапросы и CTE — запрос внутри запроса. Например, «заказы дороже среднего чека»:
CTE (SELECT customer, amount FROM orders WHERE amount > (SELECT AVG(amount) FROM orders);WITH ... AS (...)) делает то же самое, но читается как последовательность шагов. CASE— условная логика внутри запроса: разметить заказы как «крупный / средний / мелкий» прямо вSELECT.- Оконные функции —
ROW_NUMBER(),SUM() OVER (...),LAG(): нарастающие итоги, ранжирование, сравнение с предыдущим месяцем. Уровень уверенного аналитика. - Индексы, оптимизация запросов и проектирование базы — то, где SQL пересекается с инженерией. Нужно разработчикам, дата-инженерам и DBA; аналитику — по мере роста.
Хорошая новость: каждая ступень строится на предыдущей и не требует ничего извне — ни математики, ни знания других языков. Плохая: пропустить ступень не получится. Тот, кто «не понял» JOIN, не поймёт и оконные функции.
Сколько времени нужно, чтобы выучить SQL?
Первые полезные запросы — несколько дней. Уверенная база (до JOIN и GROUP BY включительно) — 4–8 недель регулярной практики. Аналитический SQL с подзапросами и оконными функциями — 3–6 месяцев работы с реальными данными. Разброс зависит от одного фактора: сколько запросов вы написали руками.
| Этап | Что умеете | Ориентир по времени |
|---|---|---|
| Первые запросы | SELECT, WHERE, ORDER BY, LIMIT к одной таблице |
2–5 дней практики |
| Базовый SQL | Агрегации, GROUP BY, HAVING, JOIN двух-трёх таблиц |
4–8 недель при 4–6 часах в неделю |
| Уверенный аналитический SQL | Подзапросы, CTE, CASE, оконные функции, работа с датами |
3–6 месяцев практики на реальных задачах |
| Продвинутый уровень | Оптимизация, индексы, проектирование схемы | Год и больше работы, по необходимости |
Обещания «выучить SQL за 7 дней» или «за 24 часа» относятся к первой строке таблицы: за неделю действительно можно начать писать простые запросы. Но вакансия аналитика требует второй и третьей строк. И ещё одно наблюдение: люди, которые учат SQL в контексте конкретной цели — «хочу стать аналитиком», «нужно проверять данные в тестах», — проходят этот путь заметно быстрее тех, кто учит «на всякий случай».
Роадмап: как выучить SQL с нуля
Порядок изучения важнее объёма: каждый этап опирается на предыдущий. Вот маршрут, по которому имеет смысл двигаться, — от понимания таблиц до реальных проектов.
- 1Основы баз данныхТаблицы, строки, столбцы, типы данных, первичные и внешние ключи, связь «один ко многим». Установите PostgreSQL или откройте SQLite и создайте таблицы
customersиorders. - 2Получение данных
SELECT,FROM,WHEREс операторамиAND,OR,IN,BETWEEN,LIKE,IS NULL;ORDER BY,LIMIT,DISTINCT. Цель — уверенно отвечать на любой вопрос к одной таблице. - 3Агрегация
COUNT,SUM,AVG,MIN,MAX,GROUP BY,HAVINGи логический порядок выполнения запроса. Здесь SQL становится инструментом аналитики. - 4Соединение таблиц
INNER JOIN,LEFT JOIN, псевдонимы таблиц, соединение трёх и более таблиц, проверка количества строк до и послеJOIN. - 5Средний уровеньПодзапросы, CTE (
WITH),CASE, функции для работы с датами и строками,UNION. Запросы становятся многошаговыми. - 6Аналитический SQLОконные функции:
ROW_NUMBER,RANK,SUM() OVER,LAG/LEAD. Нарастающие итоги, ранжирование, сравнение периодов, когорты. - 7Реальные проектыУчебная база с десятком связанных таблиц, бизнес-вопросы, проверка результатов, оформление выводов в отчёт или дашборд. Это и есть портфолио.
На этапах 1–4 достаточно одной небольшой базы вроде нашего магазина. Начиная с пятого этапа переходите на большие учебные наборы данных, иначе подзапросы и оконные функции останутся абстракцией.
Как практиковаться в SQL
SQL нельзя выучить чтением: он осваивается только написанием запросов к реальным таблицам и проверкой результатов. Прочитанная глава про JOIN забывается через неделю, а десять самостоятельно написанных соединений остаются навсегда.
- Начните писать запросы в первый же день. Не откладывайте практику «до конца теории»: прочитали про
WHERE— напишите пять запросов с разными условиями. - Работайте с реалистичными данными. Таблица из трёх строк хороша для понимания, но не для навыка. Возьмите учебную базу с тысячами строк: классические примеры — Northwind (торговая компания), Chinook (музыкальный магазин), Sakila (прокат фильмов) или любой открытый набор данных с Kaggle.
- Решайте бизнес-вопросы, а не заучивайте синтаксис. Формулируйте задачу словами — «какие товары чаще всего покупают вместе», «в каком месяце больше всего новых клиентов» — и только потом переводите на SQL. Так работает настоящий аналитик.
- Переходите к многотабличным базам постепенно. Сначала одна таблица, потом две через
JOIN, потом три-четыре. Каждый раз проверяйте, сколько строк получилось и почему. - Делайте небольшие проекты. Возьмите набор данных, поставьте себе 10–15 вопросов, ответьте на них запросами и оформите выводы. Один такой проект убедительнее сертификата.
- Задачи «на собеседование» — только после базы. Тренажёры с рейтингами и хитрыми задачами полезны, когда вы уверенно пишете
JOINиGROUP BY. До этого они только демотивируют.
Где практиковаться бесплатно: самый короткий путь — бесплатный курс SQL для начинающих от Prog Academy. Шесть разделов ведут ровно по тому же маршруту, что и эта статья: базы данных и таблицы, SELECT, WHERE, сортировка и LIMIT, агрегатные функции с GROUP BY и, наконец, JOIN — с примерами запросов и практическими заданиями на знакомом наборе данных интернет-магазина. Регистрация занимает минуту, платить не нужно.
Когда основы уложатся, переходите на большие учебные базы: Chinook (музыкальный магазин) есть в версиях для PostgreSQL, MySQL, SQLite и SQL Server, а Sakila — официальный учебный пример от MySQL. На таких данных подзапросы и оконные функции перестают быть абстракцией.
Идеи для первых проектов, у которых понятен бизнес-смысл:
- Анализ продаж интернет-магазина — выручка по месяцам и категориям, средний чек, топ-товары, доля повторных покупок.
- Клиенты и заказы — сегментация клиентов по сумме и частоте покупок, клиенты без заказов, время между первой и второй покупкой.
- База фильмов — жанры, рейтинги, актёры с наибольшим числом фильмов, средняя длительность по десятилетиям.
- Маркетинговые кампании — стоимость привлечения по каналам, конверсия из лида в покупку, окупаемость кампаний.
- Продуктовая аналитика — воронка от регистрации до оплаты, удержание по когортам, активность пользователей по дням.
Практическое задание
Проверьте себя. Ниже — таблица orders из начала статьи:
| id | customer | city | amount |
|---|---|---|---|
| 1 | Anna | Kyiv | 1200 |
| 2 | Maksym | Lviv | 850 |
| 3 | Olena | Kyiv | 2100 |
| 4 | Iryna | Odesa | 640 |
| 5 | Anna | Kyiv | 300 |
Задача: напишите запрос, который вернёт три самых крупных заказа из Киева — имя клиента и сумму, от большего к меньшему. Прежде чем читать дальше, попробуйте собрать его из команд, которые уже встречались в статье.
Решение:
SELECT customer, amount
FROM orders
WHERE city = 'Kyiv'
ORDER BY amount DESC
LIMIT 3;
Результат: Olena — 2100, Anna — 1200, Anna — 300. Если у вас получилось — вы уже умеете отвечать на реальные вопросы бизнеса. Если нет — обратите внимание на порядок: сначала фильтр WHERE, потом сортировка, потом ограничение.
Задача со звёздочкой: решите ту же задачу для «правильной» структуры с двумя таблицами customers и orders, где город хранится у клиента. Подсказка: понадобится JOIN, а фильтр по городу нужно применить к столбцу таблицы customers.
Хотите не одну задачу, а последовательный набор с разбором? Именно так устроен бесплатный курс SQL с нуля: каждая тема заканчивается практикой на тех же таблицах клиентов и заказов.
Типичные ошибки новичков в SQL
Большинство проблем при изучении SQL связаны не с синтаксисом, а с подходом. Вот те, что встречаются чаще всего:
- Заучивать синтаксис без практики. Список команд не превращается в навык. Навык появляется, когда вы десятки раз перевели вопрос в запрос и проверили результат.
- Пытаться выучить все команды сразу. В стандарте SQL сотни ключевых слов; для работы аналитика регулярно нужны два десятка. Остальное ищется в документации по мере надобности.
- Прыгать в продвинутые темы слишком рано. Оконные функции без уверенного
GROUP BYиJOIN— это заучивание шаблонов, которые ломаются при первом отклонении от примера. - Путать SQL с СУБД. «Я учу MySQL» и «я учу SQL» — почти одно и то же на базовом уровне. Не бойтесь менять систему: знания переносятся.
- Избегать
JOIN. Некоторые новички месяцами работают с одной таблицей, потому что соединения «сложные». Реальные данные всегда лежат в нескольких таблицах, и безJOINSQL остаётся игрушкой. - Писать
SELECT *не думая. Звёздочка удобна, чтобы посмотреть на таблицу, но в рабочих запросах тянет лишние столбцы, замедляет выполнение и скрывает, какие данные вам на самом деле нужны. - Не разбираться в связях между таблицами. Прежде чем писать запрос к незнакомой базе, выясните, какой столбец на какой ссылается. Неверный ключ в
ONдаёт правдоподобный, но неправильный результат — самая опасная ошибка в аналитике. - Не проверять результат. Запрос выполнился без ошибок — не значит, что он верный. Сверяйте количество строк, контрольные суммы и несколько записей вручную.
Нужно ли учить SQL, если AI уже умеет писать запросы?
Да. AI ускоряет написание запросов, но не заменяет понимание данных: чтобы поставить задачу, проверить результат и ответить за цифры, нужно знать SQL. Языковые модели — отличный помощник для того, кто понимает, что делает, и источник правдоподобных ошибок для того, кто не понимает.
Что AI действительно делает хорошо:
- Генерирует запросы по описанию задачи — особенно шаблонные, с типовыми агрегациями.
- Объясняет чужие запросы — разбирает по шагам длинный запрос из наследства коллеги.
- Находит синтаксические ошибки — пропущенную запятую, незакрытую скобку, неверный порядок ключевых слов.
- Подсказывает подходы — «здесь подойдёт оконная функция вместо подзапроса».
Что остаётся на человеке:
- Структура базы. AI не знает, что в вашей компании поле
status = 3означает «оплачен», а таблицаorders_v2— актуальная, в отличие отorders. - Бизнес-вопрос. «Активные клиенты» — это купившие за месяц, за квартал или заходившие в приложение? Пока вопрос не сформулирован точно, любой запрос будет отвечать на что-то другое.
- Логика
JOINи агрегаций. Самая частая ошибка сгенерированных запросов — дублирование строк при соединении, из-за которого выручка «вырастает» вдвое. Заметить это может только тот, кто понимает, как работаетJOIN. - Проверка результата. Запрос выполнился и вернул красивую таблицу — но верна ли она? Сверка с известными цифрами, проверка на пропуски и дубли — задача аналитика.
- Качество данных. Пустые значения, разные написания одного города, тестовые заказы в продакшн-базе — модель об этом не догадается.
- Производительность. Сгенерированный запрос может быть корректным и при этом класть базу на десять минут.
- Безопасность. Кому и какие данные можно отдавать, что нельзя отправлять во внешние сервисы, как не удалить лишнее командой без
WHERE— это ответственность человека.
Практический вывод: используйте AI как ускоритель на каждом этапе изучения — просите объяснить, почему запрос вернул не то, генерируйте варианты и сравнивайте их. Но проверяйте каждый результат сами. Именно так с AI работают аналитики, и именно так его изучают на современных курсах: как инструмент рядом с SQL, Python и BI, а не вместо них. О том, как AI меняет профессию в целом, — в статье AI + Data Analytics: самая недооценённая профессия.
SQL в работе аналитика: что ещё нужно, кроме SQL
Аналитик данных не учит SQL в изоляции: это часть набора инструментов, в котором SQL отвечает за доступ к данным, BI-система — за визуализацию, Python — за обработку и автоматизацию, а AI — за ускорение рутины. Именно так устроена работа, и именно так имеет смысл строить обучение.
Посмотрите, как это соединяется в программе обучения Data Analytics в Prog Academy. Курс состоит из трёх модулей:
- Power BI — загрузка и очистка данных через Power Query, модель данных и связи между таблицами (те самые ключи, о которых шла речь выше), функции DAX, дашборды и отчёты.
- Python для дата-аналитики — синтаксис, работа с файлами JSON и CSV, а внутри модуля — базы данных и основы SQL:
SELECT,JOIN,GROUP BY,HAVING, подзапросы. Дальше — NumPy, pandas, очистка и подготовка данных, основы статистики. - AI Start — ChatGPT и Claude в задачах аналитика, промпты для работы с данными, автоматизация рутинных операций.
Полная программа рассчитана на 5 месяцев, аккредитована в ЕС и заканчивается дипломным проектом — готовой частью портфолио. Обратите внимание на логику: SQL появляется в тот момент, когда студент уже понимает модель данных из Power BI и умеет обращаться с таблицами в Python. Так связи между таблицами, JOIN и агрегации осваиваются не как абстракция, а как способ достать данные для конкретного отчёта. Смежные навыки можно добрать отдельными короткими программами: курс Power BI для визуализации и курс Excel для работы с таблицами.
Часто задаваемые вопросы
Что такое SQL простыми словами?
SQL — язык запросов к базам данных. Вы описываете, какие данные хотите получить из таблиц, а СУБД сама находит их и возвращает результат в виде таблицы. SQL — это не программа и не база: PostgreSQL, MySQL, SQL Server и Oracle — системы, которые понимают SQL.
Для чего нужен SQL?
Чтобы получать, фильтровать, считать и объединять данные, хранящиеся в базах: продажи, клиентов, заказы, события в приложении. SQL используют в аналитике, BI и отчётности, разработке, тестировании, маркетинге, финтехе и e-commerce — везде, где данные лежат в реляционной базе.
Нужен ли SQL аналитику данных?
Да. SQL — базовое требование в подавляющем большинстве вакансий Data Analyst, часто более обязательное, чем Python. Данные компании лежат в базе, и путь к любому отчёту начинается с SQL-запроса. Поэтому SQL входит в программу курса аналитика данных в Prog Academy наряду с Power BI и Python.
Сложно ли выучить SQL?
Старт один из самых простых среди языков: SELECT, WHERE и ORDER BY читаются почти как английские предложения и осваиваются за несколько дней. Сложность растёт постепенно: JOIN и GROUP BY требуют понимания связей между таблицами, а подзапросы, CTE и оконные функции — регулярной практики.
Сколько времени нужно, чтобы выучить SQL?
Первые полезные запросы — несколько дней практики. Уверенные основы (SELECT, WHERE, GROUP BY, JOIN) — 4–8 недель при регулярных занятиях. Аналитический SQL с подзапросами и оконными функциями — 3–6 месяцев практики на реальных данных. Сроки зависят от количества написанных запросов, а не от прочитанной теории.
Что учить первым — SQL или Python?
Если цель — аналитика данных, обычно начинают с SQL: он проще, быстрее даёт результат и нужен почти в каждой вакансии. Python подключают следом — для очистки данных, статистики, автоматизации и визуализации. Для backend-разработки порядок может быть обратным. Языки не конкурируют: аналитик использует оба.
Чем SQL отличается от Excel?
Excel — инструмент для ручной работы с таблицами до сотен тысяч строк в одном файле. SQL — язык запросов к базе, где лежат миллионы строк в десятках связанных таблиц. Запрос сохраняется и повторяется, Excel-расчёт обычно собирают заново. Инструменты дополняют друг друга: результат SQL-запроса часто открывают именно в Excel.
Какую базу данных выбрать новичку: PostgreSQL или MySQL?
Для обучения подойдёт любая: базовый SQL в PostgreSQL, MySQL, SQL Server и SQLite практически одинаков. PostgreSQL чаще выбирают для аналитики и стартапов, MySQL — для веб-проектов, SQLite удобна тем, что не требует установки сервера. Начните с PostgreSQL или SQLite, а перейти на другую систему потом можно за несколько дней.
Нужно ли учить SQL, если AI умеет писать запросы?
Да. AI хорошо генерирует и объясняет запросы, но не знает структуру вашей базы, бизнес-смысл полей и не проверяет, верен ли результат. Чтобы поставить задачу, заметить ошибку в JOIN и ответить за цифры в отчёте, нужно понимать SQL. AI ускоряет работу того, кто понимает данные, и вводит в заблуждение того, кто не понимает.
Заключение
SQL — язык, на котором задают вопросы данным. Он старше большинства технологий, с которыми вы будете работать, и переживёт многие из них, потому что данные по-прежнему лежат в таблицах, а таблицы по-прежнему связаны ключами. Освоить его базу реально за один-два месяца практики: SELECT и WHERE — в первый день, GROUP BY — за неделю, JOIN — за несколько недель осознанных попыток. Дальше — подзапросы, оконные функции и реальные проекты.
Если ваша цель — не «знать SQL», а работать с данными профессионально, стройте обучение вокруг задач аналитика: SQL для доступа к данным, Power BI для отчётов, Python для обработки, AI для ускорения. Именно в такой связке эти инструменты приносят результат, и именно так они изучаются на курсе Data Analytics в Prog Academy.