SQL Format
Вставьте свой SQL в поле ниже и используйте доступные параметры для его форматирования. SQL-Format создан администраторами баз данных по стандартам индустрии и крупных технологических компаний. Приятного использования!
Что такое SQL Format и для кого он
SQL Format — бесплатный онлайн-форматтер, который превращает скученный, записанный в одну строку или с непоследовательными отступами SQL в чистую и предсказуемую структуру. Каждое предложение начинается с новой строки, списки столбцов разбиваются по одному элементу на строку, соединения и их условия получают отступ под таблицей, к которой они относятся, а вложенные запросы — отступ внутри своих скобок.
Он создан для тех, кто читает SQL целыми днями: разработчиков, проверяющих pull request, администраторов БД, разбирающих медленный запрос, взятый из журнала, аналитиков, приводящих в порядок отчёт перед тем, как им поделиться, и всех, кому достался по наследству оператор на 300 строк, записанный в одну строку. Оформление следует соглашениям, давно принятым в командах, работающих с базами данных, а параметры ниже позволяют подстроить его под стиль вашей команды.
Как пользоваться форматтером
- Вставьте или введите SQL в редактор. Можно вставить сразу несколько операторов: они разделяются по точке с запятой и форматируются по очереди.
- При необходимости настройте параметры: размер отступа, максимальную ширину строки, расположение запятых, регистр ключевых слов и то, выносятся ли открывающие скобки на отдельную строку.
- Нажмите Форматировать или Ctrl + Enter (⌘ + Enter на Mac). Отформатированный SQL заменит текст в редакторе.
- Кнопка Копировать помещает результат в буфер обмена, а Очистить позволяет начать заново. В строке состояния показываются количество строк и символов, а также позиция курсора.
Параметры форматирования
Результат определяют пять параметров. Значения по умолчанию (отступ в 4 пробела, 120 столбцов, запятые в конце, ключевые слова в верхнем регистре, скобки на той же строке) подходят большинству команд; для каждого параметра есть отдельная страница с дополнительными примерами.
Отступ (пробелы)
Параметр Отступ (пробелы) задаёт, сколько пробелов используется на каждом уровне вложенности, от 0 и выше; по умолчанию — 4. Символы табуляции во входном тексте заменяются таким же количеством пробелов, кроме как внутри строковых литералов и идентификаторов в кавычках. В примере ниже используется значение 2.
SELECT c.name,
SUM(o.total) AS revenue
FROM customers c
JOIN orders o
ON o.customer_id = c.id
WHERE o.status = 'PAID'
GROUP BY c.nameПодробнее: Параметр «Отступ (пробелы)»
Максимум столбцов
Параметр Максимум столбцов — это ширина строки, к которой стремится форматтер (по умолчанию 120). Длинные выражения переносятся на несколько строк, чтобы уложиться в неё; значение 0 отключает перенос.
SELECT order_id,
quantity * unit_price * (1 - discount_rate) * (1 +
tax_rate) + shipping_fee - loyalty_credit AS
amount_due
FROM order_lines
WHERE order_id = 42Подробнее: Параметр «Максимум столбцов»
Запятые
Параметр Запятые позволяет выбрать между запятыми в конце (после каждого элемента, по умолчанию) и запятыми в начале (в начале следующей строки). С запятыми в начале легко закомментировать столбец, а при добавлении столбца в конец получаются более компактные диффы.
SELECT id
,email
,country_code
,created_at
FROM customersКлючевые слова
Параметр Ключевые слова переводит ключевые слова SQL, такие как SELECT, FROM и JOIN, в верхний (по умолчанию) или нижний регистр. Строковые литералы и комментарии остаются такими, как вы их написали.
select id,
name
from products
where price > 100
order by nameПодробнее: Параметр «Ключевые слова»
Скобки с новой строки
Параметр Скобки с новой строки переносит открывающую скобку блока — например, подзапроса после IN, тела CTE или списка, разбитого на несколько строк, — на отдельную строку, а не оставляет её в конце предыдущей строки.
SELECT name
FROM customers
WHERE id IN
(
SELECT customer_id
FROM orders
WHERE total > 500
)Подробнее: Параметр «Скобки с новой строки»
Какие диалекты SQL он понимает
Форматтер не привязан к одной СУБД. Он работает с SQL, общим для основных движков: SELECT с соединениями, подзапросами и CASE, INSERT, UPDATE, DELETE, распространённые DDL-операторы, такие как CREATE TABLE и CREATE VIEW, а также комментарии в форме -- и /* */, которые сохраняются.
Для PostgreSQL есть дополнительная поддержка: приведения типов ::, параметры $1 и тела в долларовых кавычках $$ … $$, код PL/pgSQL в которых раскладывается блок за блоком. Идентификаторы в обратных кавычках в MySQL и идентификаторы в квадратных скобках [bracket] в SQL Server сохраняются без изменений. Переключателя диалектов нет, поэтому прочий синтаксис, специфичный для одной СУБД, например разделитель пакетов GO в SQL Server, особым образом не обрабатывается. Различия описаны в руководствах по диалектам.
Что происходит с вашим SQL
Когда вы нажимаете «Форматировать», SQL из редактора отправляется на наш сервер по HTTPS, форматируется в памяти и сразу возвращается на страницу. Он не записывается ни в базу данных, ни в файл, ни в журнал и не передаётся партнёрам по аналитике или рекламе. Тем не менее не вставляйте настоящие пароли, ключи или персональные данные ни в какой онлайн-инструмент; подробности — на странице о конфиденциальности.
Информация о конфиденциальности
Часто задаваемые вопросы
Сохраняется ли где-нибудь мой SQL?
Нет. SQL форматируется в памяти сервера только в рамках этого запроса и возвращается в ответе. Он не сохраняется ни в базе данных, ни в файле, ни в журнале.
Может ли форматирование изменить то, что делает мой запрос?
Форматтер спроектирован так, чтобы менять только пробельные символы, переносы строк и регистр ключевых слов, но никогда — порядок или логику вашего SQL. Как и в случае с любым инструментом, переписывающим код, просмотрите результат, прежде чем выполнять его в рабочей базе данных. Учтите, что регистр ключевых слов применяется и к именам, совпадающим с ключевыми словами SQL, например к столбцу с именем month.
С какими базами данных он работает?
Он форматирует SQL, общий для PostgreSQL, MySQL, SQL Server, Oracle, Db2 и SQLite, с дополнительной обработкой приведений типов, параметров и тел PL/pgSQL в PostgreSQL. Выбора диалекта нет.
Есть ли ограничение по размеру?
Да. Один запрос может содержать до 20 000 строк SQL.
Можно ли отформатировать несколько операторов сразу?
Да. Разделите их точкой с запятой; каждый оператор форматируется отдельно, а их исходный порядок сохраняется.
Это платно или нужна учётная запись?
Нет. Форматтер бесплатный, регистрация не требуется.
Руководства и справочные материалы
Помимо самого инструмента, эти руководства рассказывают о соглашениях, на которых строится читаемый SQL:
- Руководство по стилю SQL
- Как форматировать сложные SQL-запросы
- Запятые в начале или в конце строки в SQL
- Форматирование SQL для код-ревью и контроля версий
- Типичные ошибки читаемости SQL
- Форматирование запросов PostgreSQL и PL/pgSQL
- Различия диалектов SQL, влияющие на форматирование
- Чек-лист форматирования SQL перед развёртыванием миграции
- Документация по параметрам: что делает каждая настройка, с примерами