🚀 SQL-хак: как проверить любой запрос без таблиц и админских прав за 5 секунд
Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨
В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?
Есть решение:
оператор VALUES! 🤩
SQL позволяет “создать” временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.
Как это работает: 👨💻
Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
-- Создаем "виртуальную" таблицу прямо на лету!
SELECT
t.id,
t.status,
CASE
WHEN t.status = 'approved' THEN '✅ Одобрено'
WHEN t.status = 'pending' THEN '⏳ В ожидании'
ELSE '❌ Отклонено'
END as status_text
FROM (
VALUES
(1, 'approved'),
(2, 'pending'),
(3, 'rejected'),
(4, 'approved'),
(5, 'unknown')
) as t(id, status);
Что здесь происходит: ✅
• VALUES (…): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей “виртуальной” таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (…) as t: Теперь к этому “набору данных” можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!
Итог: 🤩
Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на “боевых” данных. Must-have для каждого, кто ценит свое время!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Знали об этом трюке? Или тоже мучались, создавая временные таблицы? Делитесь в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru