belun.app Блог
EN

Как форматировать SQL-запросы ради читаемости (и меньшего числа ошибок)

Почему единый стиль SQL важен, какие правила стоит принять и как привести запрос в порядок или минифицировать его одним кликом — бесплатно и прямо в браузере.

Код SQL-запроса на экране — форматирование и приведение запросов к базе данных к читаемому виду

Первый вариант запроса почти никогда не совпадает с тем, который хочется перечитывать через полгода. Начинается всё с select * from users where active = 1, потом добавляется join, group by, подзапрос — и вот перед вами строка в 300 символов, где нужное условие спрятано где-то посередине. SQL-форматтер превращает это в текст, который реально можно прочитать, и делает всю работу в браузере, так что запрос не уходит с вашего компьютера.

Зачем вообще форматировать

Читаемый SQL ловит ошибки. Когда каждая клауза на своей строке, а все AND выстроены друг под другом, забытое условие join или случайное декартово произведение сразу бросается в глаза. Схлопните тот же запрос в одну строку — и та же ошибка спрячется на самом видном месте.

Есть и сторона код-ревью. Диффы отформатированного SQL меньше и понятнее: поменяли один столбец — и в пул-реквесте видно одну изменённую строку, а не перетасованный абзац. Кто хоть раз разбирал хранимую процедуру, записанную одной строкой на 2000 символов, знает, чем это оборачивается.

И ещё есть простая цена перечитывания собственного кода. Отформатированный запрос можно открыть и понять, не собирая его в голове заново строка за строкой.

Правила, которые действительно помогают

Основную работу делают несколько привычек:

  • Ключевые слова в одном регистре. Заглавные SELECT, FROM, WHERE выбирают чаще всего: так каркас запроса сразу отделяется от ваших имён таблиц и столбцов.
  • По одному столбцу на строку в списке выборки. Десять столбцов в одну строку читать мучительно; разбитые построчно, они выглядят списком, каким и являются.
  • Join и условия с отступом под своей клаузой: ON держится рядом со своим JOIN, а каждый AND уходит на отдельную строку.

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

Форматировать для чтения, минифицировать для отправки

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

SQL-форматтер умеет и то и другое и не спотыкается о диалекты. Обратные кавычки MySQL, квадратные скобки SQL Server и приведения :: из PostgreSQL проходят туда-обратно без изменений. Вставьте целый файл миграции с несколькими инструкциями — каждая ляжет отдельно, с пустой строкой между ними.

Ничего не уходит из браузера

Это важнее, чем кажется на первый взгляд. Запрос обычно несёт в себе форму вашей схемы: имена таблиц, столбцов, иногда конкретный ID или адрес почты прямо в WHERE. Вставьте это в случайный сайт «бесплатный SQL-форматтер» — и вы отдали незнакомцу набросок своей базы. Здесь форматирование идёт на JavaScript прямо на открытой странице. Отключите интернет после загрузки — всё продолжит работать.

Закиньте следующий запутанный запрос в SQL-форматтер и посмотрите, как он выстроится по полочкам — без регистрации, без загрузки, без ожидания.

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

SQL-форматтер →