Форматтер SQL
Вставьте однострочный SQL-оператор, скопированный из лога или ORM, и форматтер разобьет его на отступленные клаузы с единообразным регистром ключевых слов, переносами строк перед SELECT, FROM, WHERE, GROUP BY и выровненными столбцами в проекции. Поддерживает диалекты MySQL, PostgreSQL, SQL Server, Oracle, SQLite и BigQuery, у каждого слегка различающиеся ключевые и зарезервированные слова.
Как работает форматирование
-
1
Вставьте ваш SQL
Однострочный блок, минифицированный вывод из Hibernate, что угодно. Несколько операторов, разделенных `;`, форматируются все.
-
2
Выберите диалект и стиль
Диалект управляет списком ключевых слов; стиль управляет расположением запятых (ведущие или хвостовые), шириной отступа и регистром ключевых слов.
-
3
Токены разбираются, а не заменяются регулярками
Токенизатор корректно обрабатывает строки, комментарии, скобки и подзапросы. Строковые литералы сохраняются дословно.
-
4
Скопируйте отформатированный вывод
Проверенный 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.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
После (ведущая запятая, ключевые слова в верхнем регистре, отступ 2 пробела):
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.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
Стилевые решения, которые важны
- Верхний против нижнего регистра ключевых слов. UPPERCASE традиционен и легко считывается. Нижний регистр чище в современных редакторах кода с подсветкой синтаксиса.
- Ведущие против хвостовых запятых. Ведущие (
, col) упрощают комментирование одного столбца. Хвостовые (col,) читаются естественнее в тексте. - Расположение запятых в
GROUP BY. Часто по одной на строку для длинных клауз, в строку для коротких. - Отступ JOIN.
ONна следующей строке (висячий отступ) или на той же строке. Длинные условия выигрывают от висячего отступа. - Подзапросы. Отступайте весь подзапрос, а не только открывающую скобку.
Особенности диалектов
- Обратные кавычки MySQL против двойных кавычек PostgreSQL для идентификаторов.
- CTE
WITH, у MS SQL есть требование;передWITH; форматтер это учитывает. - Оконные функции, длинные клаузы
OVER (...)выигрывают от перенесенных по строкамPARTITION BYиORDER BY. - BigQuery имеет
ARRAY_AGG,STRUCTи суффиксы таблиц (*_yyyymmdd), которые токенизатор не должен ломать. - Oracle имеет синтаксис внешнего соединения
(+), форматтер его сохраняет, но помечает как устаревший.
Чего форматтер не делает
- Не исправляет ошибки, некорректный JOIN остается некорректным.
- Не разворачивает
SELECT *, списки столбцов не выводятся из схемы. - Не оптимизирует запросы, только компоновка, не планы выполнения.
- Не переписывает подзапросы в CTE, это другая задача.
Часто задаваемые вопросы
Нет, он чисто косметический. Пробелы, переносы строк и расположение запятых перемещаются, но ключевые слова, операторы, литералы и идентификаторы сохраняются в точности.
Поддерживаются, CREATE TABLE, ALTER, CREATE PROCEDURE, триггеры. Форматтер обрабатывает блочные конструкции (BEGIN ... END) и продолжения строк внутри процедур.
Не должен, если это происходит, вероятно, это несоответствие диалекта. Попробуйте переключить диалект. Сообщайте о стойких сбоях; мы относимся к ним как к багам.
Flink SQL и Cassandra CQL выглядят похоже, но имеют диалект-специфичные ключевые слова, которые обычные форматтеры портят. Используйте с осторожностью и проверяйте, что вывод выполняется.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Конвертер размера файлов
Преобразуйте значения между байтами, КБ, МБ, ГБ, ТБ и двоичными единицами IEC (KiB, MiB, GiB, TiB), свободно сочетая десятичные и двоичные единицы.
Инструмент доступен на других языках
- Formater SQL [PL]
- Format SQL [ID]
- SQLフォーマッター [JA]
- รูปแบบ SQL [TH]
- Định dạng SQL [VI]
- Formatador SQL [PT]
- SQL-Formatter [DE]
- SQL-formaterare [SV]
- Formateador SQL [ES]
- SQL 포매터 [KO]
- Formateur SQL [FR]
- SQL-formatter [NL]
- تنسيق SQL [AR]
- SQL Formatter [EN]
- Formatter SQL [IT]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]