Форматировщик SQL

Приводит в порядок неряшливый SQL с единообразными отступами и регистром ключевых слов, в основных диалектах.

Ключевые слова
Отступ
Ввод
Вывод

Здесь появится вывод

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

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

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

Диалекты и почему они важны

SQL — это скорее семейство тесно связанных языков, чем один язык. Каждый движок базы данных добавляет собственные ключевые слова, функции и синтаксис поверх стандарта. Выбор диалекта, соответствующего вашей базе, помогает форматировщику распознать эти специфичные для движка конструкции и правильно их расположить. Этот инструмент поддерживает:

  • Standard SQL — хороший вариант по умолчанию для переносимых запросов.
  • PostgreSQL — синтаксис и функции, специфичные для Postgres.
  • MySQL — включая соглашения MySQL и MariaDB.
  • SQL Server (T-SQL) — диалект Microsoft SQL Server.
  • BigQuery — Standard SQL от Google BigQuery.
  • SQLite — встраиваемая база данных, широко используемая в мобильных приложениях.
  • Oracle (PL/SQL) — диалект Oracle Database.

Соглашения о регистре ключевых слов

Давнее соглашение пишет ключевые слова SQL (SELECT, FROM, WHERE, JOIN) заглавными буквами, а идентификаторы (имена таблиц и столбцов) — строчными, чтобы структурные слова выделялись на фоне ваших данных. Переключатель регистра ключевых слов позволяет применить это одним щелчком:

  • UPPER — ключевые слова заглавными, самый распространённый стиль.
  • lower — ключевые слова строчными, предпочитается некоторыми командами и руководствами по стилю.
  • Preserve — оставляет регистр ровно таким, каким вы его написали.

Переключатель отступа (2 пробела, 4 пробела или таб) задаёт, насколько глубоко отступают вложенные предложения и подзапросы, чтобы соответствовать существующему стилю вашей команды.

Советы для читаемого SQL

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

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

Какие диалекты SQL поддерживаются?
Standard SQL, а также PostgreSQL, MySQL, SQL Server (T-SQL), BigQuery, SQLite и Oracle (PL/SQL). Выберите тот, что соответствует вашей базе, чтобы специфичный для диалекта синтаксис форматировался правильно.
Меняет ли форматирование то, что делает мой запрос?
Нет. Форматирование корректирует только пробелы и, если вы выберете, регистр ключевых слов. Логика и результаты запроса не меняются.
Отправляется ли мой SQL на сервер?
Нет. Форматирование выполняется целиком в вашем браузере. Ничто из вставленного не загружается, поэтому безопасно форматировать запросы, которые ссылаются на конфиденциальную схему или данные.
Почему он показывает ошибку вместо форматирования?
Форматировщик сначала разбирает ваш SQL, поэтому действительно некорректный синтаксис — несбалансированные скобки, неполные инструкции — невозможно расположить, и о нём сообщается. Исправьте синтаксис и отформатируйте снова.
Может ли он форматировать несколько инструкций сразу?
Да. Вставьте несколько инструкций, разделённых точкой с запятой, и каждая будет отформатирована по очереди.
Переведёт ли он имена моих таблиц и столбцов в верхний регистр?
Нет. Параметр регистра ключевых слов затрагивает только зарезервированные ключевые слова SQL. Ваши идентификаторы — имена таблиц, столбцов и псевдонимы — остаются ровно такими, какими вы их написали.