Форматирование SQL
Запрос из лога или ORM приходит одной строкой на три экрана, и понять, где кончается один JOIN и начинается WHERE, невозможно.
Почему вертикаль читается лучше
Запрос из лога или собранный библиотекой приходит одной строкой на три экрана, и понять, где кончается один JOIN и начинается WHERE, невозможно. Форматтер разбивает его по ключевым словам, выстраивает отступы по уровням вложенности и приводит регистр к единому виду.
Читаемость даёт вертикаль. Каждое условие в WHERE, каждое поле в SELECT и каждое присоединение таблицы встают на свою строку, и глаз находит нужное место без чтения всего запроса. Вложенные подзапросы получают дополнительный отступ, и сразу видно их границы.
Инструмент понимает основные диалекты и не трогает содержимое строковых литералов и комментариев. Обратная операция — сжатие в одну строку — пригодится, когда запрос надо вставить в конфигурацию или передать в поле, где переносы недопустимы.

| Приём | Что даёт |
|---|---|
| Ключевые слова с новой строки | Видна структура запроса |
| Поля в столбик | Легко добавить и убрать |
| Отступ у подзапроса | Видны его границы |
| Единый регистр | Ключевые слова отличаются от имён |
SEQUEL, Кодд и стандарт 1986 года
Язык придумали в IBM в начале семидесятых: Дональд Чемберлин и Рэймонд Бойс описали SEQUEL — язык структурированных запросов к реляционным таблицам, которые незадолго до этого предложил Эдгар Кодд. Название пришлось сменить на SQL из-за чужого товарного знака.
Замысел был в том, чтобы запрос читался как английская фраза: выбрать такие-то поля из такой-то таблицы, где выполняется условие. Идея сработала настолько, что язык пережил полвека и все смены поколений в вычислительной технике. Первый стандарт ANSI вышел в 1986 году, и с тех пор его пересматривали больше десяти раз.
Побочный эффект замысла — многословность. Читаемая фраза на десять условий превращается в абзац, а машинно сгенерированный запрос — в стену текста без единого переноса. Форматирование стало отдельной задачей примерно тогда же, когда появились первые генераторы запросов. Позже вокруг языка выросли построители запросов и ORM, которые собирают текст программно; читаемость результата их обычно не заботит, и форматтер стал обязательным инструментом отладки.


Когда форматировать и что это не решает
Вставьте запрос и заберите отформатированный. Для разбора чужого запроса из лога это первое действие: пока структура не видна, искать в нём ошибку бессмысленно. Обратное сжатие пригодится, когда готовый запрос надо положить в одну строку конфигурации.
Держите единый стиль в проекте. Спор о том, писать ключевые слова прописными или строчными, решается один раз и фиксируется настройкой форматтера: разнобой мешает читать диффы, потому что правка отступа выглядит как правка логики.
Форматирование не проверяет смысл запроса и не оптимизирует его: медленный запрос останется медленным, просто станет читаемым. Привести в порядок JSON-ответ той же базы поможет JSON-форматтер.
Форматированный запрос удобно хранить в отдельном файле рядом с кодом. Тогда правку видно в истории построчно, а сам запрос можно прогнать в консоли базы без вырезания его из строки на языке программирования.
Обратите внимание на длину строк. Форматтер выстраивает вертикаль, но условие с десятком значений в списке всё равно уедет за экран. Такие места удобно разбивать вручную по одному значению на строку — тогда правка списка видна в истории как одна строка.
| Авторы языка | Чемберлин и Бойс |
| Первое название | SEQUEL |
| Год появления | 1974 |
| Теория реляционных баз | Эдгар Кодд |
| Первый стандарт ANSI | 1986 |
| Что делает форматтер | структуру, отступы, регистр |
| Что не трогает | строки и комментарии |
| Что не делает | не ускоряет запрос |
Как пользоваться
Форматтер разбирает SQL на токены — строки, комментарии, скобки, слова — и раскладывает его по правилам: каждое ключевое слово верхнего уровня с новой строки, поля через запятую в столбик, условия AND и OR с отступом, подзапросы в скобках вложенно. Строки в кавычках и комментарии остаются как есть, ключевые слова приводятся к выбранному регистру. Работает с диалектами MySQL, PostgreSQL, SQLite, MS SQL и ClickHouse, для сложных конструкций вроде CASE и оконных функций раскладка простая, но читаемая. Обратный режим сжимает запрос в одну строку для лога или URL. Проверено 04.09.2026.
- Любой SQL: SELECT с джойнами и подзапросами, INSERT, UPDATE, DELETE, CREATE TABLE. Несколько запросов через точку с запятой тоже подходят.
- Ключевые слова — в верхний регистр, нижний или как есть; отступ — два или четыре пробела.
- Кнопка копирует отформатированный запрос; «Сжать» собирает его обратно в одну строку без лишних пробелов и комментариев.
- Форматтер не выполняет запрос и не проверяет его: незакрытые кавычки и скобки он покажет, но ошибки в именах полей — нет.
Частые вопросы
По каким правилам расставляются строки
С новой строки начинаются SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, все виды JOIN, UNION, INSERT INTO, VALUES, UPDATE, SET, DELETE FROM, WITH и RETURNING. Элементы списка SELECT после запятой переносятся на отдельные строки с отступом, условия AND и OR внутри WHERE, HAVING и ON — тоже. Открывающая скобка перед SELECT начинает вложенный уровень отступа.
Что происходит со строками и комментариями
Всё внутри одинарных и двойных кавычек и обратных апострофов сохраняется посимвольно, включая переносы. Комментарии -- до конца строки и /* */ остаются на месте при форматировании и удаляются при сжатии.
Почему регистр меняется только у ключевых слов
Имена таблиц и полей в PostgreSQL и других базах чувствительны к регистру, если взяты в кавычки, а без кавычек могут совпадать с ключевыми словами по написанию. Форматтер меняет регистр только у слов из списка зарезервированных и функций вроде COUNT, остальное оставляет как в исходнике.
Можно ли форматировать большой дамп
Да, но результат будет длинным: INSERT с тысячами VALUES разложится по строкам. Для дампов удобнее режим сжатия или форматирование по одному запросу.
Куда уходит вставленный текст?
Нет, запрос обрабатывается в браузере, его можно вставлять с реальными именами таблиц.
Спросите нейросети об инструменте
Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.
Похожие инструменты
Разбирает JSON с отступами и в одну строку, показывает дерево с путями к узлам и объясняет ошибку по-русски: где висячая запятая, где кавычки из Word, где комментарий.
ОткрытьНормализатор URLОчистите список URL от UTM-меток, рекламных идентификаторов, якорей и лишних слешей; отсортируйте параметры.
ОткрытьТаблица ASCIIПолная таблица печатных символов ASCII с кодами плюс конвертер текста в байты, HEX, двоичный код и HTML-коды.
ОткрытьКалькулятор CRC32Рассчитайте контрольную сумму CRC32 для текста в HEX, десятичном и двоичном виде. Всё выполняется локально.
ОткрытьCSV в JSON и обратноКонвертер таблиц в обе стороны. Сам определяет разделитель, понимает кавычки и переносы внутри ячеек, показывает предпросмотр и ошибки в строках.
ОткрытьГенератор случайных строкСоздайте случайные строки заданной длины из букв, цифр и символов. До 500 значений, генерация через crypto.getRandomValues.
ОткрытьЕщё инструменты для кода и данных
Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.