Программирование и IT
Как изучить SQL с нуля
SQL — язык запросов к реляционным базам данных. Он нужен разработчикам, аналитикам, тестировщикам и менеджерам, которые хотят сами доставать цифры. Базовые запросы осваиваются за несколько недель, уверенная работа со сложными отчётами — за два-три месяца практики. Ниже — порядок тем и способы тренироваться на настоящей базе.
В этой статье
Где тренироваться#
Учить SQL по картинкам бессмысленно — нужна база, в которой можно
выполнять запросы и ошибаться. Три варианта по возрастанию усилий:
- онлайн-песочница или тренажёр с готовыми таблицами и проверкой ответов;
- SQLite — база в одном файле, ничего настраивать не нужно;
- PostgreSQL на своём компьютере — ближе всего к рабочим условиям.
Для PostgreSQL удобно взять учебную базу с десятком связанных таблиц
(заказы, клиенты, товары) — такие демонстрационные базы легко найти.
Программа-клиент — psql в терминале или любой графический клиент.
Неделя 1–2: выборка и фильтрация#
Начни с чтения данных — запросы на чтение ничего не ломают:
SELECT name, city
FROM customers
WHERE city = 'Казань' AND created_at >= '2025-01-01'
ORDER BY name
LIMIT 10;
Разбери операторы сравнения, IN, BETWEEN, LIKE, IS NULL. Главное
правило про NULL: это «неизвестно», поэтому NULL = NULL не даёт
истину, а для проверки нужен IS NULL.
Неделя 3–4: агрегаты и группировка#
COUNT, SUM, AVG, MIN, MAX, затем GROUP BY и HAVING. Запомни
логический порядок выполнения запроса: FROM → WHERE → GROUP BY →
HAVING → SELECT → ORDER BY. Отсюда разница между WHERE (фильтрует
строки до группировки) и HAVING (фильтрует группы после неё). Учти, что
COUNT(*) считает все строки, а COUNT(колонка) пропускает NULL.
Неделя 5–6: соединения таблиц#
INNER JOIN, LEFT JOIN, реже RIGHT и FULL. Нарисуй на бумаге две
маленькие таблицы по три строки и вручную выпиши результат каждого вида
соединения — после этого путаница исчезает. Типичная ошибка — соединение без
полного условия, из-за которого строки размножаются, и сумма получается в
несколько раз больше настоящей.
Неделя 7–8: подзапросы, CTE, оконные функции#
Подзапросы в WHERE и FROM, общие табличные выражения WITH для
читаемости, затем оконные функции — ROW_NUMBER, RANK, LAG, сумма
нарастающим итогом через SUM(...) OVER (ORDER BY ...). Это тема, на
которой проверяют на собеседованиях аналитиков.
Дальше: изменение данных и проектирование#
INSERT, UPDATE, DELETE, транзакции (BEGIN, COMMIT, ROLLBACK),
первичные и внешние ключи, нормализация, индексы и чтение плана запроса
через EXPLAIN. Меняющие данные запросы сначала пробуй в транзакции и
откатывай — так ошибка ничего не испортит.
Как проверять свои запросы#
- Перед запуском запиши ожидаемый результат: примерно сколько строк и
какая сумма. Сильное расхождение — повод искать ошибку. - После
JOINсравниcount(*)с числом строк в исходной таблице. - Реши одну задачу двумя способами — через подзапрос и через
JOIN—
и сравни ответы. - Храни свои запросы в Git-репозитории с комментарием, на какой вопрос
отвечает каждый. Это и конспект, и портфолио.
Учебный проект: спроектируй базу для личной библиотеки или бюджета,
заполни её данными и напиши десять отчётов — от простой выборки до
рейтинга с оконной функцией.
План по этапам
- Недели 1–2 — SELECT и WHEREВыборка, фильтры, сортировка, работа с NULL на учебной базе.
- Недели 3–4 — агрегатыCOUNT, SUM, AVG, GROUP BY, HAVING и порядок выполнения запроса.
- Недели 5–6 — JOINВнутренние и внешние соединения, проверка числа строк после соединения.
- Недели 7–8 — подзапросы и окнаWITH, ROW_NUMBER, RANK, LAG, нарастающий итог.
- Недели 9–10 — своя базаТаблицы с ключами, транзакции, индексы и десять отчётов в репозитории.
Начать изучать эту тему у себя
План ляжет в твой репозиторий: отмечай этапы, веди конспект — история изменений покажет, как ты продвинулся.
Проверь себя
1.В таблице orders три строки со значениями amount 100, 200 и 300. Что вернёт SELECT SUM(amount) FROM orders?
2.В таблице users 4 строки, у одной из них email равен NULL. Что вернёт SELECT COUNT(email) FROM users?
3.Какое предложение фильтрует строки до группировки?
Источники
-
Учебник PostgreSQLОфициальное введение в SQL на примере PostgreSQLбесплатно
-
Документация SQLiteЛёгкая база в одном файле для первых запросовбесплатно
-
StepikБесплатные курсы по SQL с задачами на автопроверкебесплатно
Было полезно?