Справочник по SQL
Темы, которые спрашивают на собеседованиях по SQL. Каждый разбор — один сквозной пример, типовые ошибки и задачи с автопроверкой в браузере.
JOIN в SQL: виды соединений с примерами
INNER, LEFT, RIGHT, FULL и CROSS JOIN на одном примере из двух таблиц: что возвращает каждый вид, куда пропадают строки без пары и на чём ловят на собеседовании.
LEFT JOIN в SQL: примеры, NULL и поиск строк без пары
Как LEFT JOIN ведёт себя с NULL: антиджойн через IS NULL, фильтр в WHERE против ON, ошибка COUNT(*) при агрегатах и почему NOT IN возвращает пустоту.
Оконные функции в SQL: примеры и синтаксис
OVER, PARTITION BY, ROW_NUMBER, RANK, LAG и накопительный итог на одном наборе заказов: чем окно отличается от GROUP BY, где прячется ловушка ROWS и RANGE и почему окно нельзя писать в WHERE.
Задачи по SQL с решениями: 8 типовых с собеседования
Восемь задач на одном наборе данных — от топ-N и антиджойна до окон и LAG. У каждой разбор: что на самом деле проверяет интервьюер и на каком месте обычно ошибаются.
GROUP BY и HAVING в SQL: группировка строк с примерами
Как GROUP BY схлопывает строки в группы, чем count(*) отличается от count(колонка) и почему WHERE и HAVING фильтруют разное. С ошибкой must appear in GROUP BY.
Подзапросы в SQL: виды, примеры, коррелированный подзапрос
Скалярный подзапрос, IN, EXISTS, производная таблица и подзапрос в SELECT на одном наборе заказов: чем коррелированный дороже и где на нём ошибаются.
CTE (WITH) в SQL: что это, синтаксис и примеры запросов
Чем CTE отличается от подзапроса, как связать несколько WITH в цепочку, когда PostgreSQL материализует CTE и как работает WITH RECURSIVE с якорем и UNION ALL.
UNION в SQL: объединение таблиц и разница с UNION ALL
Как UNION склеивает результаты запросов по строкам, чем отличается от UNION ALL и от JOIN, что делают INTERSECT и EXCEPT, где ломается порядок колонок.
Нормализация базы данных: 1НФ, 2НФ и 3НФ на примере
Как одна плоская таблица разваливается на users и orders. Три нормальные формы по шагам, аномалии вставки и удаления, замеры денормализации на 2 млн строк в PostgreSQL 16.
Индексы в PostgreSQL: виды, создание и когда они бесполезны
B-tree, составной, частичный и GIN индекс на живых данных: 200 тыс. клиентов и 800 тыс. заказов в PostgreSQL 16. Планы EXPLAIN до и после, реальные мс.
«You have an error in your SQL syntax»: разбор и фикс
Что означает «near ... at line N» в ошибке MySQL, почему опечатка стоит перед указанным местом, и разбор пяти частых причин с воспроизведением и исправлением.
Gaps and Islands в SQL: как найти непрерывные серии дат
Как найти непрерывные серии дат в PostgreSQL через ROW_NUMBER, сдвинутый ключ и GROUP BY. Разбор дублей, часовых поясов и допустимых разрывов.