С чего начать учить SQL: план на две недели для новичка
Пошаговый план, как выучить SQL с нуля за две недели: что читать, какие запросы писать каждый день и как проверять себя без преподавателя.
SQL — редкий случай, когда язык можно выучить до рабочего уровня за пару недель. Он маленький: десяток ключевых слов покрывает девять запросов из десяти, которые пишут аналитики, тестировщики и разработчики. Но у новичка обычно две беды: он читает про SQL вместо того, чтобы писать запросы, и не понимает, правильно ли получилось. Этот план решает обе.
Что нужно до начала
Ничего устанавливать не надо. Раньше первый день уходил на установку PostgreSQL или MySQL, настройку клиента и поиск учебной базы. Сейчас база работает прямо в браузере: вы пишете запрос, нажимаете «Выполнить» и видите таблицу с результатом. Именно так устроен курс SQL на этой платформе — учебная база с магазином, заказами и сотрудниками уже внутри.
Единственное, что действительно нужно, — полчаса в день. Не три часа в субботу, а полчаса каждый день: SQL запоминается пальцами, а не глазами, и перерыв в четыре дня откатывает вас к началу.
Первая неделя: один запрос — одна мысль
Первые семь дней вы учитесь задавать вопросы одной таблице. Порядок важен: каждая следующая тема опирается на предыдущую.
- SELECT и FROM. Достать все строки, потом только нужные столбцы. Кажется тривиальным, но именно здесь закладывается привычка не тянуть звёздочку.
- WHERE. Фильтр по одному условию, потом по двум через AND и OR, потом по диапазону через BETWEEN и по списку через IN. Отдельно — работа с NULL: почему
= NULLникогда не срабатывает. - ORDER BY и LIMIT. «Пять самых дорогих товаров» — первый запрос, который выглядит как настоящая задача.
- Функции для строк и дат. Склеить имя с фамилией, вырезать год из даты, привести к нижнему регистру.
- COUNT, SUM, AVG, MIN, MAX. Один запрос — одно число. Здесь новички впервые видят, что SQL умеет считать.
- GROUP BY. Самая важная тема недели: «сколько заказов у каждого клиента». Потратьте на неё два дня, если нужно.
- HAVING. Фильтр после группировки. Разница с WHERE — классический вопрос на собеседовании.
Правило дня: не читать дальше, пока не написали пять запросов по теме своими руками. Пять, а не один: первый вы напишете, глядя в пример, а пятый — уже по памяти.
Вторая неделя: несколько таблиц
Настоящие данные живут в нескольких таблицах, и вторая неделя — про то, как их соединять.
- JOIN. Внутреннее соединение: заказы вместе с именами клиентов. Нарисуйте две таблицы на бумаге и стрелки между ключами — это правда помогает.
- LEFT JOIN. Клиенты, у которых нет ни одного заказа. Почему их не видно во внутреннем соединении и как их достать.
- Соединение трёх таблиц. Заказ, товар, категория. Здесь ломаются те, кто пропустил первый день недели.
- Подзапросы. «Товары дороже среднего»: запрос внутри запроса. Сначала в WHERE, потом в FROM.
- CASE. Условия внутри выборки: пометить заказы как «крупный» и «мелкий».
- Оконные функции — только знакомство. ROW_NUMBER и «лучший заказ каждого клиента». Не обязательно для старта, но покажет, куда расти.
- День повторения. Десять запросов из первой недели по памяти. Что не вспомнилось — то и есть ваша дыра.
Как проверять себя без преподавателя
Главный вопрос самоучки: «а правильно ли я написал?». Запрос может выполниться без ошибки и вернуть неверный результат — и вы этого не заметите. Поэтому проверять надо результатом, а не отсутствием ошибки: в заданиях курса ответ сравнивается с эталонной таблицей, и если у вас лишняя строка или не тот порядок, вы увидите это сразу.
Второй способ — тренажёр SQL: случайные задачи разной сложности с проверкой. Он хорош именно для второй недели, когда синтаксис уже знаком и нужна практика на скорость. Пятнадцать минут тренажёра в день закрепляют больше, чем час чтения.
Третий способ — расследования: детективные истории, где улики лежат в таблицах, а каждый шаг — запрос. Там нет подсказки «используйте JOIN»: вы сами решаете, что искать. Это ближе всего к настоящей работе.
Если двух недель нет
Есть короткий путь — мини-курс «SQL за вечер»: четыре урока и два часа, после которых вы сможете достать данные из базы, посчитать итоги и соединить две таблицы. Этого хватает, чтобы перестать просить коллег «выгрузить табличку». Дальше — по плану выше, уже без страха перед синтаксисом.
Типичные ошибки первых недель
- Учить диалект вместо языка. PostgreSQL, MySQL и SQLite отличаются мелочами; всё из плана выше одинаково везде.
- Пропускать GROUP BY. Без него аналитика в SQL не существует. Если непонятно — вернитесь, а не идите дальше.
- Читать про индексы и нормализацию на третий день. Это важно, но не сейчас. Сначала — запросы.
- Не смотреть на данные. Прежде чем писать запрос, выполните
SELECT * FROM таблица LIMIT 10и посмотрите, что внутри. Половина ошибок — от неверных предположений о данных.
Через две недели вы не станете экспертом. Но вы сможете сами ответить на вопрос «сколько мы продали в марте по каждой категории» — а это ровно то, за что SQL и ценят.