Что делает инструмент
Форматтер SQL превращает длинный однострочный запрос в читаемый, с единообразными отступами. Каждое предложение (SELECT, FROM, WHERE, GROUP BY, ORDER BY) начинается с новой строки, выбираемые столбцы и условия перечисляются по одному на строку, соединения выравниваются под таблицей, к которой они присоединяются, а подзапросы получают отступ внутри своих скобок.
Отформатированный SQL проще проверять в pull request, отлаживать, когда запрос возвращает не те строки, и вставлять в документацию. Это помогает и тогда, когда вы копируете запрос из лога ORM или сообщения об ошибке приложения, где всё записано в одну строку.
Как пользоваться
- Вставьте одну или несколько SQL-инструкций в поле Ввод, перетащите на него файл
.sqlили нажмите Пример. - Выберите Диалект своей базы данных.
- Выберите, как писать Ключевые слова: в ВЕРХНЕМ РЕГИСТРЕ, в нижнем регистре или как написано. Имена функций, например
COUNT, следуют той же настройке. - Выберите Отступ: 2 пробела, 4 пробела или табуляция.
- Скопируйте результат или скачайте его как файл
.sql. Горячие клавиши: Ctrl/Cmd+Enter — форматировать, Ctrl/Cmd+Shift+C — копировать.
Несколько инструкций, разделённых точкой с запятой, отделяются друг от друга пустой строкой. Комментарии остаются на своих местах.
Пример
select u.id, count(o.id) as orders from users u left join orders o on o.user_id = u.id group by u.id
превращается в
SELECT
u.id,
COUNT(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY
u.id
Советы
Ключевые слова в верхнем регистре выделяют предложения на фоне имён таблиц и столбцов — это самое распространённое соглашение в командах. Если ваша команда пишет SQL строчными буквами, выберите нижний регистр, и весь запрос будет оформлен так же. Если форматтер сообщает о неожиданном токене, проверьте, правильно ли выбран диалект: например, имена в обратных кавычках допустимы в MySQL, но не в стандартном SQL.
Частые вопросы
› Отправляется ли мой SQL на сервер?
Нет. Форматтер работает в вашем браузере, поэтому запросы, раскрывающие имена таблиц, данные клиентов или бизнес-логику, остаются на вашем устройстве.
› Какие диалекты SQL поддерживаются?
Стандартный SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), BigQuery, Snowflake, Redshift и Spark SQL. Правильно выбранный диалект помогает с синтаксисом, характерным для конкретной СУБД, например идентификаторами в обратных кавычках, приведением типов через :: или именами в квадратных скобках.
› Меняет ли форматирование то, что делает запрос?
Нет. Меняются только пробельные символы и, если вы так выберете, регистр ключевых слов и имён функций. Идентификаторы, строковые литералы и комментарии сохраняются ровно в том виде, в каком написаны.
› Почему появляется "Unexpected end of input"?
Обычно не закрыта скобка или кавычка. Ошибка указывает на конец запроса; ищите последнюю открывающую ( или ', у которой нет пары.