Rusau LearnВойти

SQL-песочница с базой курса

База интернет-магазина "Полка" из курса "Рабочий день тестировщика: тренажер по SQL". Меняйте данные и создавайте таблицы: кнопка вернёт базу к исходной.

  • SQLite 3.49, как проверка в Rusau Learn
  • Таблиц: 7
  • Без регистрации, база живёт в этой вкладке

Запрос к базе

Таблицы и колонки – нажмите имя, чтобы подставить
  • (, , , , )
  • (, , , , )
  • (, , , , , )
  • (, , , , , )
  • (, , , , , )
  • (, , , )
  • (, , , )
База загружается…

Где тот же запрос даст другой ответ

Курс идёт на двух площадках. Stepik проверяет ответы на MySQL 8.0, а Rusau Learn и эта песочница – на SQLite 3.49. На работе чаще всего встретится третий движок, PostgreSQL. Почти всё в курсе работает на всех трёх одинаково, но в строках ниже ответы расходятся. Значения Stepik и Rusau Learn сняты прогоном на живых площадках, PostgreSQL описан по документации.

Что проверяемStepik (MySQL 8.0)Rusau Learn и песочница (SQLite 3.49)PostgreSQL

Регистр букв в сравнении

SELECT id, status FROM orders WHERE status = 'Paid';
9 строк: 'Paid' и 'paid' для MySQL одно и то жеПусто: регистр различаетсяПусто, как в Learn

Буквы ё и е

SELECT 'ёлка' = 'елка' AS same;
1: ё и е считаются одной буквой0: это разные буквыfalse

LIKE и русские буквы

SELECT id, subject FROM support_tickets WHERE subject LIKE '%списали%';
Находит "Списали деньги дважды"Пусто: без учёта регистра SQLite сравнивает только латиницуПусто: LIKE различает регистр, для поиска без него есть ILIKE

Деление целых

SELECT 7 / 2 AS half;
3.50003: дробная часть отбрасывается3, как в Learn

Вид среднего

SELECT AVG(amount) AS avg_payment FROM payments;
2686.15382686.1538461538462686.1538461538461538

Склейка строк через ||

SELECT 'a' || 'b' AS glued, CONCAT('a', 'b') AS same_everywhere;
0: для MySQL || – логическое ИЛИ. CONCAT даёт abab и abab и ab

Колонка вне GROUP BY

SELECT customer_id, status, COUNT(*) AS orders_count FROM orders GROUP BY customer_id;
Ошибка 1055Выполнит и возьмёт status из любой строки группыОшибка, как на Stepik

Порядок групп без ORDER BY

SELECT status, COUNT(*) AS orders_count FROM orders GROUP BY status;
paid, cancelled, pending, failed – как встретились в таблицеcancelled, failed, paid, pending – по алфавитуЛюбой порядок, без ORDER BY он не обещан

FULL OUTER JOIN

SELECT o.id AS order_id, p.id AS payment_id FROM orders o FULL OUTER JOIN payments p ON p.order_id = o.id;
Ошибка: в MySQL полного соединения нет, его собирают из LEFT JOIN, UNION и RIGHT JOIN16 строк16 строк

Приведение к целому

SELECT CAST(2.6 AS SIGNED) AS signed_int, CAST(2.6 AS INTEGER) AS integer_int;
AS SIGNED даёт 3, а AS INTEGER – ошибку3 и 2: AS SIGNED переводится в CAST(ROUND(x) AS INTEGER), а AS INTEGER отбрасывает дробьSIGNED не знает, AS INTEGER округляет до 3

TRUNCATE внутри транзакции

START TRANSACTION; TRUNCATE TABLE payments; ROLLBACK; SELECT COUNT(*) AS payments_left FROM payments;
0: TRUNCATE завершает транзакцию, ROLLBACK ничего не вернёт13: TRUNCATE выполняется как DELETE, и ROLLBACK его отменяет13: ROLLBACK вернёт таблицу

Внешние ключи

PRAGMA foreign_keys;
Проверяются: строку со ссылкой в никуда база не приметНе проверяются (0). В песочнице проверку включает PRAGMA foreign_keys = ON;Проверяются

Длина VARCHAR(n)

CREATE TABLE notes (title VARCHAR(5)); INSERT INTO notes VALUES ('слишком длинно'); SELECT title FROM notes;
Ошибка 1406: строка длиннее n не поместитсяСохранит строку целиком: длину SQLite не проверяетОшибка, как на Stepik

Пустое значение

SELECT IFNULL(NULL, 0) AS a, COALESCE(NULL, 0) AS b;
Обе функции работаютОбе функции работаютIFNULL нет, работает только COALESCE

Имя текущей базы

SELECT DATABASE();
Имя базыОшибка: база одна, функции нетФункции нет, вместо неё current_database()

Текст ошибки

SELECT nickname FROM customers;
Unknown column 'nickname' in 'field list'no such column: nicknamecolumn "nickname" does not exist

Что переписывается само

Задания курса написаны под MySQL. Чтобы те же решения выполнялись на SQLite, песочница и проверка заданий в Rusau Learn перед запуском заменяют четыре конструкции. Остальное выполняется как написано.

Где учиться дальше

Курс SQL проводит по этой базе от первого SELECT до приёмки миграции. Остальные курсы платформы учат тестированию целиком: от теории до резюме и собеседования.

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают. Подробнее