Форматирование SQL

Вставьте SQL — он разложится сам, строки и комментарии останутся нетронутыми.

Как пользоваться

  1. Вставьте SQL в поле — он форматируется по мере ввода, нажимать ничего не нужно.
  2. Выберите верхний или нижний регистр для зарезервированных слов и отступ в 2 или 4 пробела; результат обновляется сразу.
  3. Проверьте число строк, затем скопируйте результат или скачайте его файлом .sql.

Пример

Ввод

select u.id, u.name, count(o.id) as orders
from users u left join orders o on o.user_id = u.id
where u.active = 1 and o.created_at >= '2026-01-01'
group by u.id, u.name order by orders desc limit 10;

Отформатировано

SELECT
  u.id,
  u.name,
  count(o.id) AS orders
FROM users u
LEFT JOIN orders o
  ON o.user_id = u.id
WHERE u.active = 1
  AND o.created_at >= '2026-01-01'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC
LIMIT 10;

Только правила по умолчанию: каждое предложение начинается с новой строки, элементы списка получают два пробела, а AND сдвигается. count(...) — имя функции, поэтому сохраняет набранный вами нижний регистр; строка с датой не тронута.

Правила, ограничения и известные проблемы

  • Это форматирование пробелов: SQL не разбирается, не проверяется и не выполняется. Неверный SQL всё равно будет разложен.
  • Селектора диалекта нет. Одинарные и двойные кавычки, обратные кавычки, квадратные скобки и строки $tag$ распознаются, поэтому SQL из MySQL, PostgreSQL, SQL Server и SQLite можно вставлять как есть.
  • Регистр меняется только у зарезервированных слов. Имена функций, типов (count, int, varchar) и идентификаторы в кавычках выводятся ровно как набраны; заключайте идентификаторы в кавычки, если ваша база различает регистр.
  • Строки, числа и комментарии никогда не переписываются. Комментарий -- вызывает перевод строки, а комментарии никогда не удаляются. Режима минификации нет.
  • Результат подсвечивается синтаксически (ключевые слова, идентификаторы, строки, числа, комментарии), чтобы структуру было легче просматривать. Подсветка только визуальная: «Копировать» и «Скачать» всегда дают обычный отформатированный текст.
  • Переводы строк появляются только на границах предложений, списков, CASE, подзапросов, окон и колонок DDL. Аргументы функций и списки IN (...) остаются в одной строке; длинные строки переносятся внутри панели результата, а «Копировать» и «Скачать» сохраняют точный текст без переносов.
  • Строки просматриваются с учётом экранирования через '' и \'. Строка стандартного SQL, заканчивающаяся обратной косой чертой, например 'C:\', может быть прочитана как незакрытая: вы получите предупреждение, а ввод останется нетронутым.
  • Нет хранимых процедур, DELIMITER и блоков PL/SQL; нет загрузки файлов, параметров URL и истории. Всё выполняется в браузере: ничего не загружается и не сохраняется.
  • Свыше 200 000 символов результат обновляется примерно через 0,6 с после того, как вы закончите ввод; текст никогда не обрезается. Вывод использует LF и не имеет завершающего перевода строки; форматирование идемпотентно.

Что обычно нужно дальше, когда запрос стал читаемым.