Форматирование SQL
Вставьте запрос, выберите свою СУБД и получите его с отступами и по одному предложению в строке.
Работает полностью в браузере
- Исходный текст
- 0
- Результат
- 0
- Изменение
- 0%
Ввод до 10 МБ. Инструмент меняет только оформление: он не выполняет ваш SQL, не проверяет его по схеме и не оптимизирует.
Как отформатировать SQL-запрос
- Вставьте запрос в поле или нажмите Вставить пример, чтобы посмотреть, как это работает.
- Выберите свою СУБД в списке Диалект, затем задайте регистр ключевых слов и размер отступа.
- Отформатированный запрос появляется ниже по мере ввода. Скопируйте его или скачайте как файл
.sql.
Как сделать SQL читаемым
База данных читает запрос одинаково, лежит он в одной строке или в сорока, поэтому запросы из журналов, ORM и инструментов мониторинга так часто приходят одной сплошной строкой. Форматирование ставит каждое основное предложение (SELECT, FROM, WHERE, GROUP BY, ORDER BY) в отдельную строку и делает отступы для столбцов, условий и подзапросов под ним, так что структура запроса видна с первого взгляда и легко заметить пропущенное условие соединения.
Оформление зависит от выбранного диалекта, потому что слова и символы в разных СУБД различаются. Приведение типа PostgreSQL вроде price::numeric, нумерованный параметр $1, имя в обратных кавычках MySQL, предложение CONNECT BY в Oracle и TOP 10 в SQL Server допустимы в одном диалекте и вызывают синтаксическую ошибку в другом. Заполнители привязанных параметров (?, $1, :name, @name) распознаются и остаются нетронутыми.
Регистр ключевых слов не влияет на выполнение запроса, поэтому это вопрос внутреннего стиля. Форматировщик, понимающий грамматику, может безопасно его менять, потому что знает, какие слова являются ключевыми, а какие — именами столбцов или текстом в кавычках.
Советы
- Сравниваете запрос до и после изменения? Отформатируйте оба с одинаковыми настройками и сравните их в «Сравнить тексты».
- Возвращает ли запрос столбцы с JSON? Вставьте значение в «Форматирование и проверка JSON», чтобы его прочитать.
- Нужно переименовать таблицу во всём длинном скрипте? «Поиск и замена» справится с этим до форматирования.
Вопросы и ответы
Загружается ли мой SQL?
Нет. Код форматирования — это скрипт, который отдаётся с этого сайта и загружается при первой вставке запроса; сам запрос остаётся в вашем браузере и не отправляется ни на какой сервер.
Почему важен диалект?
У каждой СУБД свой синтаксис. В PostgreSQL есть приведения типов :: и параметры $1, в SQL Server — имена в [квадратных скобках] и TOP, MySQL и MariaDB заключают имена в обратные кавычки, а у BigQuery свои формы массивов и структур. Правильный выбор позволяет разбору принять ваш запрос. Если вы не уверены, безопаснее выбрать стандартный SQL, но он строже относится к расширениям конкретных производителей.
Почему появляется ошибка для запроса, который в моей СУБД работает?
Форматировщик читает всю инструкцию целиком, а не просто расставляет отступы в строках, поэтому его останавливает незакрытая скобка или кавычка, а также синтаксис, принадлежащий другому диалекту. В сообщении указаны строка и столбец, где он остановился, а чаще всего помогает выбор подходящего диалекта.
Меняет ли форматирование то, что делает запрос?
Меняются только пробельные символы и, по вашему выбору, регистр ключевых слов. Строковые литералы, имена в кавычках и числа сохраняют свой текст, поэтому 'select' в кавычках остаётся строчным, даже если вы выбрали ЗАГЛАВНЫЕ.
Можно ли форматировать сразу несколько инструкций?
Да. Инструкции, разделённые точкой с запятой, форматируются каждая отдельно, а между ними вставляется пустая строка.
Какой регистр ключевых слов выбрать?
Подойдёт любой: это вопрос стиля, и СУБД его игнорируют. Ключевые слова заглавными — более старое соглашение, и в простом тексте они выделяют предложения. Строчные часто встречаются в кодовых базах, где уже используется линтер или вывод ORM в таком стиле. Вариант «Как введено» оставляет ваш регистр без изменений.