SQL · Postgres

Программа курса

SQL для backend-разработки на PostgreSQL. 13 тем, ≥10 упражнений в каждой, всё на реальном Postgres в браузере.

Как устроено

Порядок идёт от повторения к глубине. Начинаем с диагностики, чтобы не тратить время на то, что ты уже знаешь. Темы 4–8 (агрегации, JOIN вглубь, подзапросы, CTE, оконные функции) — ядро «глубины», которого тебе не хватает. Темы 11–13 (индексы/EXPLAIN, транзакции) — то, что отличает backend-инженера от «человека, пишущего SELECT».

Твой путь: Темы 01 (SELECT), 02 (NULL) и 04 (агрегация) пройдены ✅. Сейчас — Тема 03 (Выражения и CASE): заодно закрывает вопрос «WHERE vs FILTER» из агрегации. Дальше по плану — Тема 05 (JOIN вглубь) на беглость.

Урок 00

Площадка + диагностика

Знакомство с движком. 8 задач по нарастающей — чтобы понять твой реальный уровень.

✅ Готов · 8 задач
Тема 01

SELECT вглубь

WHERE, DISTINCT, ORDER BY, LIMIT/OFFSET, BETWEEN, IN, LIKE/ILIKE. Логический порядок выполнения.

✅ Готов · 12 упражнений
Тема 02

NULL и трёхзначная логика

IS NULL, COALESCE, NULLIF, ловушки NOT IN и агрегатов с NULL. Тема, где обычно и живёт «нет глубины».

✅ Пройдено · 12 упражнений
Тема 03

Выражения и CASE

CASE, приведение типов (::), строки, работа с датами, арифметика. Плюс разбор WHERE vs FILTER vs CASE.

✅ Готов · 12 упр. · твой следующий шаг
Тема 04

Агрегация: GROUP BY / HAVING

COUNT/SUM/AVG/MIN/MAX, группировка, HAVING, COUNT(*) vs COUNT(col), FILTER.

✅ Пройдено · ядро · 12 упр.
Тема 05

JOIN вглубь

INNER/LEFT/RIGHT/FULL/CROSS, self-join, несколько JOIN, анти-join и semi-join, ON vs WHERE.

🔒 Ядро · ≥10 упр.
Тема 06

Подзапросы

Скалярные, IN, ANY/ALL, EXISTS/NOT EXISTS, коррелированные, подзапрос в FROM.

🔒 Ядро · ≥10 упр.
Тема 07

CTE (WITH) и рекурсия

WITH для читаемости, цепочки CTE, рекурсивные CTE (иерархии, генерация рядов).

🔒 Ядро · ≥10 упр.
Тема 08

Оконные функции

OVER, PARTITION BY, ROW_NUMBER/RANK/DENSE_RANK, LAG/LEAD, нарастающие итоги, frames.

🔒 Ядро · ≥10 упр.
Тема 09

Множества: UNION / INTERSECT / EXCEPT

UNION vs UNION ALL, пересечение и разность, требования к столбцам.

🔒 Дальше · ≥10 упр.
Тема 10

Изменение данных

INSERT, UPDATE, DELETE, UPSERT (ON CONFLICT), RETURNING, безопасные UPDATE.

🔒 Дальше · ≥10 упр.
Тема 11

DDL, ключи и ограничения

CREATE TABLE, PK/FK/UNIQUE/CHECK/NOT NULL, базовая нормализация, JSONB кратко.

🔒 Дальше · ≥10 упр.
Тема 12

Индексы и EXPLAIN

Почему запрос медленный, чтение плана, когда индекс помогает, типы индексов.

🔒 Backend · ≥10 упр.
Тема 13

Транзакции и изоляция

BEGIN/COMMIT/ROLLBACK, ACID, уровни изоляции, блокировки, дедлоки.

🔒 Backend · ≥10 упр.
Темп

Не пытайся пройти всё сразу. Один урок = одна идея + практика, 15–30 минут. Возвращайся к темам через день-два — это интервальное повторение, оно и строит долгую память. Порядок можно менять: после диагностики я подскажу, с чего тебе реально стартовать.