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

Запрос из лога или ORM приходит одной строкой на три экрана, и понять, где кончается один JOIN и начинается WHERE, невозможно.


Токенизатор понимает строки в '…', "…" и `…`, комментарии -- и /* */, скобки, операторы. Форматирование не меняет смысл запроса, только пробелы и регистр ключевых слов. Проверено 04.09.2026.

Почему вертикаль читается лучше

Запрос из лога или собранный библиотекой приходит одной строкой на три экрана, и понять, где кончается один JOIN и начинается WHERE, невозможно. Форматтер разбивает его по ключевым словам, выстраивает отступы по уровням вложенности и приводит регистр к единому виду.

Читаемость даёт вертикаль. Каждое условие в WHERE, каждое поле в SELECT и каждое присоединение таблицы встают на свою строку, и глаз находит нужное место без чтения всего запроса. Вложенные подзапросы получают дополнительный отступ, и сразу видно их границы.

Инструмент понимает основные диалекты и не трогает содержимое строковых литералов и комментариев. Обратная операция — сжатие в одну строку — пригодится, когда запрос надо вставить в конфигурацию или передать в поле, где переносы недопустимы.

Работа с табличными данными
Запросы к таблицам появились задолго до экранов, и читаемость записи всегда была проблемой. Фото: Викисклад, общественное достояние.
ПриёмЧто даёт
Ключевые слова с новой строкиВидна структура запроса
Поля в столбикЛегко добавить и убрать
Отступ у подзапросаВидны его границы
Единый регистрКлючевые слова отличаются от имён

SEQUEL, Кодд и стандарт 1986 года

Язык придумали в IBM в начале семидесятых: Дональд Чемберлин и Рэймонд Бойс описали SEQUEL — язык структурированных запросов к реляционным таблицам, которые незадолго до этого предложил Эдгар Кодд. Название пришлось сменить на SQL из-за чужого товарного знака.

Замысел был в том, чтобы запрос читался как английская фраза: выбрать такие-то поля из такой-то таблицы, где выполняется условие. Идея сработала настолько, что язык пережил полвека и все смены поколений в вычислительной технике. Первый стандарт ANSI вышел в 1986 году, и с тех пор его пересматривали больше десяти раз.

Побочный эффект замысла — многословность. Читаемая фраза на десять условий превращается в абзац, а машинно сгенерированный запрос — в стену текста без единого переноса. Форматирование стало отдельной задачей примерно тогда же, когда появились первые генераторы запросов. Позже вокруг языка выросли построители запросов и ORM, которые собирают текст программно; читаемость результата их обычно не заботит, и форматтер стал обязательным инструментом отладки.

Большая вычислительная машина
Реляционные базы родились на машинах, где каждый запрос считался вручную по времени. Фото: Erik Pitti, CC BY 2.0.
Картотека
Картотека — предок таблицы: строки, поля и запрос на выборку по признаку. Фото: https://www.flickr.com/photos/mamsy/, CC BY 2.0.

Когда форматировать и что это не решает

Вставьте запрос и заберите отформатированный. Для разбора чужого запроса из лога это первое действие: пока структура не видна, искать в нём ошибку бессмысленно. Обратное сжатие пригодится, когда готовый запрос надо положить в одну строку конфигурации.

Держите единый стиль в проекте. Спор о том, писать ключевые слова прописными или строчными, решается один раз и фиксируется настройкой форматтера: разнобой мешает читать диффы, потому что правка отступа выглядит как правка логики.

Форматирование не проверяет смысл запроса и не оптимизирует его: медленный запрос останется медленным, просто станет читаемым. Привести в порядок JSON-ответ той же базы поможет JSON-форматтер.

Форматированный запрос удобно хранить в отдельном файле рядом с кодом. Тогда правку видно в истории построчно, а сам запрос можно прогнать в консоли базы без вырезания его из строки на языке программирования.

Обратите внимание на длину строк. Форматтер выстраивает вертикаль, но условие с десятком значений в списке всё равно уедет за экран. Такие места удобно разбивать вручную по одному значению на строку — тогда правка списка видна в истории как одна строка.

Авторы языкаЧемберлин и Бойс
Первое названиеSEQUEL
Год появления1974
Теория реляционных базЭдгар Кодд
Первый стандарт ANSI1986
Что делает форматтерструктуру, отступы, регистр
Что не трогаетстроки и комментарии
Что не делаетне ускоряет запрос

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

Форматтер разбирает SQL на токены — строки, комментарии, скобки, слова — и раскладывает его по правилам: каждое ключевое слово верхнего уровня с новой строки, поля через запятую в столбик, условия AND и OR с отступом, подзапросы в скобках вложенно. Строки в кавычках и комментарии остаются как есть, ключевые слова приводятся к выбранному регистру. Работает с диалектами MySQL, PostgreSQL, SQLite, MS SQL и ClickHouse, для сложных конструкций вроде CASE и оконных функций раскладка простая, но читаемая. Обратный режим сжимает запрос в одну строку для лога или URL. Проверено 04.09.2026.

  1. Любой SQL: SELECT с джойнами и подзапросами, INSERT, UPDATE, DELETE, CREATE TABLE. Несколько запросов через точку с запятой тоже подходят.
  2. Ключевые слова — в верхний регистр, нижний или как есть; отступ — два или четыре пробела.
  3. Кнопка копирует отформатированный запрос; «Сжать» собирает его обратно в одну строку без лишних пробелов и комментариев.
  4. Форматтер не выполняет запрос и не проверяет его: незакрытые кавычки и скобки он покажет, но ошибки в именах полей — нет.

Частые вопросы

По каким правилам расставляются строки

С новой строки начинаются 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 разложится по строкам. Для дампов удобнее режим сжатия или форматирование по одному запросу.

Куда уходит вставленный текст?

Нет, запрос обрабатывается в браузере, его можно вставлять с реальными именами таблиц.

Спросите нейросети об инструменте

Отвечает DeepSeek по данным этой страницы и тому, что у вас сейчас на экране: что делает, как устроен, ограничения

Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.

Похожие инструменты

JSON-форматтер и валидатор

Разбирает 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 инструмента.