После урока по SQL хочется где-нибудь порешать задачи. Ставить ради этого базу и придумывать себе данные бывает лень, особенно когда ещё путаешься в JOIN.
Собрал шесть тренажёров, к которым можно перейти сразу после теории. Есть обычный задачник, несколько игр и мой бот в Telegram. Пишу с уклоном в QA: я работаю QA-лидом и обучаю тестированию, поэтому смотрю в первую очередь на то, какие задания можно использовать при подготовке.
1. QA SQL | SQL-тренажёр
Первым поставлю своего бота. В нём можно решать SQL-задачи разного уровня через Telegram.
Формат простой: появилось время, открыл задачу, попробовал написать запрос. Можно заниматься после уроков или возвращаться к темам, которые уже подзабылись. Мне нравится, что практика находится там же, где переписки: до неё хотя бы не нужно добираться через ещё один учебный кабинет.
С телефона удобно взять небольшое задание. Если запрос разрастается, я бы пересел за компьютер: набирать вложенные запросы на мобильной клавиатуре всё-таки удовольствие сомнительное.
2. SQLabHub
У SQLabHub учебная база интернет-магазина. В заданиях встречаются пользователи без заказов, товары без продаж, заказы с несколькими платежами. Для начинающего тестировщика довольно понятные ситуации.
Например, найти заказ с несколькими записями об оплате. Написать запрос получится через группировку. А потом можно подумать над самим результатом: это повторная оплата или несколько попыток, из которых успешна только одна? Такой вопрос уже требует посмотреть на данные внимательнее.
Редактор работает в браузере, используется SQLite. Есть ожидаемый результат, подсказки и разборы. Задания бесплатные; для сохранения прогресса предлагают создать аккаунт.
На простом уровне упражнения местами похожи друг на друга. Если WHERE уже получается без подсказок, можно переходить к объединению таблиц. Дальше есть CTE и оконные функции. Задачи авторские, хотя оформлены в стиле заданий с собеседований.
3. Query the Murder
В Query the Murder через SQL расследуют убийства. В базе лежат сведения о подозреваемых, их алиби и событиях. Нужно разобраться в них и найти виновного.
Дела сделаны по мотивам книг Агаты Кристи. Начальные задания рассчитаны на SELECT и WHERE, затем появляются JOIN, группировки и подзапросы. Схема базы видна рядом с задачей, а если совсем застрял, можно открыть решение с объяснением.
Такой формат я бы попробовал, когда обычные учебные таблицы уже надоели. У запроса появляется понятная цель: проверить алиби конкретного человека или найти связь между событиями.
Всё работает в браузере, бесплатно и без регистрации. Тексты на английском. И да, здесь можно случайно узнать развязку книги, которую ещё не читал.
4. Lost at SQL
В Lost at SQL есть два режима. Learning game ведёт с основ, а в Expert challenges можно сразу взяться за задачи посложнее.
Я бы выбирал по тому, насколько уверенно пишутся простые запросы. Если пока приходится подсматривать синтаксис, лучше начать с обучения. Если с ним всё нормально, можно открыть испытания и посмотреть, где появятся трудности.
Игра на английском. Для длинного условия переводчик пригодится, но названия таблиц и колонок лучше оставить как есть, чтобы потом не искать в базе переведённое имя.
5. SQL Side Quest
SQL Side Quest подойдёт, если хочется потренироваться именно на PostgreSQL. Запросы выполняются в браузере, ставить базу локально не нужно.
В Learning Mode объясняют основы и дают писать запросы в редакторе. Затем можно перейти в Story Mode с постапокалиптическим сюжетом или выбрать отдельный сценарий. Среди них тоже есть детектив.
В уроках разбираются SELECT, условия, сортировка и JOIN. В сюжетных заданиях встречается GROUP BY.
На главной есть ещё кнопка Practice Mode, но пока рядом стоит Coming soon. Этот режим ещё придётся подождать.
6. Schemaverse
В Schemaverse можно командовать космическим флотом через SQL. Покупаешь корабль с помощью INSERT, задаёшь действия, смотришь результаты. Игра работает внутри PostgreSQL.
Если хочется пойти дальше, поведение флота можно автоматизировать через PL/pgSQL. Тут уже есть повод разобраться с процедурным языком: корабли должны действовать сами, пока ты занят чем-то другим.
Для входа нужна регистрация. Доступны браузерный интерфейс и подключение через psql.
С нуля я бы сюда не шёл: придётся одновременно учить SQL и разбираться в устройстве игры. А вот после обычных задач можно попробовать. Хотя есть риск увлечься флотом и забыть, что вообще-то пришёл учиться.
Мне как тестировщику в таких задачах интересно ещё и проверить сам ответ. Запрос выполнился, строки появились, но все ли нужные записи попали в выборку?
Например, посчитай заказы по пользователям, а затем проверь, что получилось с теми, кто ничего не заказал. Если они исчезли из результата, разберись почему. Условие исходной задачи могло этого не требовать, но на работе подобную вещь легко пропустить.
Начать можно с моего бота. Если попробуешь, напиши в комментариях, как тебе: что удобно, чего не хватает, где что-то бесит. Бота развиваю, так что конкретные замечания пригодятся. Если знаешь ещё какой-нибудь тренажёр, тоже кидай ссылку, посмотрю.
ссылка на оригинал статьи https://habr.com/ru/articles/1106654/