🚀 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

@@dima_sqlit


Ссылки