6 SQL тренажёров для самостоятельной практики

—

от автора

После урока по SQL хочется где-нибудь порешать задачи. Ставить ради этого базу и придумывать себе данные бывает лень, особенно когда ещё путаешься в JOIN.

Собрал шесть тренажёров, к которым можно перейти сразу после теории. Есть обычный задачник, несколько игр и мой бот в Telegram. Пишу с уклоном в QA: я работаю QA-лидом и обучаю тестированию, поэтому смотрю в первую очередь на то, какие задания можно использовать при подготовке.

1. QA SQL | SQL-тренажёр

Первым поставлю своего бота. В нём можно решать SQL-задачи разного уровня через Telegram.

Пример задания QA SQL | SQL-тренажёр

Пример задания QA SQL | SQL-тренажёр

Формат простой: появилось время, открыл задачу, попробовал написать запрос. Можно заниматься после уроков или возвращаться к темам, которые уже подзабылись. Мне нравится, что практика находится там же, где переписки: до неё хотя бы не нужно добираться через ещё один учебный кабинет.

С телефона удобно взять небольшое задание. Если запрос разрастается, я бы пересел за компьютер: набирать вложенные запросы на мобильной клавиатуре всё-таки удовольствие сомнительное.

Бот здесь: @qasql_bot.

2. SQLabHub

У SQLabHub учебная база интернет-магазина. В заданиях встречаются пользователи без заказов, товары без продаж, заказы с несколькими платежами. Для начинающего тестировщика довольно понятные ситуации.

Пример SQLabHub

Пример SQLabHub

Например, найти заказ с несколькими записями об оплате. Написать запрос получится через группировку. А потом можно подумать над самим результатом: это повторная оплата или несколько попыток, из которых успешна только одна? Такой вопрос уже требует посмотреть на данные внимательнее.

Редактор работает в браузере, используется SQLite. Есть ожидаемый результат, подсказки и разборы. Задания бесплатные; для сохранения прогресса предлагают создать аккаунт.

На простом уровне упражнения местами похожи друг на друга. Если WHERE уже получается без подсказок, можно переходить к объединению таблиц. Дальше есть CTE и оконные функции. Задачи авторские, хотя оформлены в стиле заданий с собеседований.

3. Query the Murder

В Query the Murder через SQL расследуют убийства. В базе лежат сведения о подозреваемых, их алиби и событиях. Нужно разобраться в них и найти виновного.

Пример Query the Murder

Пример Query the Murder

Дела сделаны по мотивам книг Агаты Кристи. Начальные задания рассчитаны на 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/