Запрос, скопированный из лога, ORM-дебага или консоли администратора базы данных, почти всегда выглядит как одна длинная строка без единого переноса. Прочитать такой SQL и найти в нём ошибку тяжело. SQL-форматтер решает эту проблему за секунду.
Что делает форматтер
Форматтер расставляет переносы строк и отступы по стандартным правилам: каждое ключевое слово верхнего уровня (SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY) начинается с новой строки, список полей и условий выравнивается по столбцу, вложенные подзапросы получают дополнительный отступ.
Например, вот такой запрос:
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 group by u.id, u.name having count(o.id) > 0 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
GROUP BY
u.id,
u.name
HAVING
count(o.id) > 0
ORDER BY
orders DESC
LIMIT
10;
Поддерживаемые диалекты
SQL — не совсем один язык: у MySQL, PostgreSQL, SQLite, MariaDB, T-SQL (SQL Server) и BigQuery есть свои особенности синтаксиса (например, TOP в T-SQL вместо LIMIT). Форматтер SQL умеет учитывать выбранный диалект, чтобы такие конструкции распознавались корректно, а не ломали разбор запроса.
Регистр ключевых слов
Отдельная настройка — регистр ключевых слов: SELECT заглавными или select строчными. Это вопрос стиля команды или проекта, единого стандарта нет, поэтому инструмент позволяет переключать регистр одним кликом.
Зачем это нужно
- Код-ревью. Отформатированный запрос читается за секунды, а не построчным разбором «где тут WHERE».
- Отладка производительности. Прежде чем разбираться, почему запрос выполняется медленно, полезно сначала увидеть его структуру целиком.
- Документация и миграции. Аккуратно оформленный SQL проще хранить в репозитории и сравнивать через git diff.
Форматирование работает полностью в браузере — запрос никуда не отправляется, что важно, если в нём встречаются реальные имена таблиц или условия с чувствительными данными.