Отформатируйте, проверьте и поймите любой SQL-запрос.
Девятнадцать диалектов, линтер, называющий строку и колонку, подсветка синтаксиса и разбор каждой инструкции — всё внутри этой вкладки, без отправки куда-либо.
Здесь ничего не запускается само. Нажмите «Форматировать», когда запрос будет готов.
Пока ничего не загружено.
Разбор появится, как только будет хотя бы одна инструкция.
Девятнадцать диалектов, а не один
PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, BigQuery, Snowflake, Redshift, DuckDB, Oracle и другие — у каждого свои зарезервированные слова, кавычки и параметры. Вставьте запрос, и диалект определится сам.
Проблемы с номером строки
Незакрытые кавычки и скобки, DELETE без WHERE, LIMIT без ORDER BY. Каждое замечание называет строку и колонку, а клик по нему ставит туда курсор.
Вне главного потока
Форматирование идёт в Web Worker, поэтому дамп на 5 МБ не подвешивает страницу во время обработки. Время рядом с результатом — настоящее, измеренное.
Ничего не покидает вкладку
Ни загрузки, ни аккаунта, ни похода на сервер. Боевой запрос несёт имена таблиц, идентификаторы и бизнес-логику — и ничто из этого никуда не уходит.
Как это работает
Принесите запрос
Вставьте его, перетащите .sql, загрузите пример или получите его из другого инструмента. Брошенный файл ждёт: ничего не загружается и не форматируется, пока вы не скажете.
Задайте правила
Диалект, регистр ключевых слов, ширина отступа, где стоят AND и OR, до какой длины растёт выражение перед переносом. Каждый параметр меняет результат следующего форматирования.
Нажмите «Форматировать»
Движок перепишет запрос, панель проверки перечислит, на что стоит взглянуть, а разбор покажет инструкции, таблицы, соединения и CTE.
Заберите с собой
Скопируйте, скачайте .sql или отправьте прямо в другой инструмент набора: сравнить две версии, сделать изображение, посчитать хеш.
Форматирование — только половина дела
Большинство онлайн-«красивилок» SQL умеют одно: расставлять переносы строк. Этого хватает ровно до момента, когда запрос не просто некрасив, а неверен — кавычка, оставшаяся открытой посередине, скобка, которая не закрывается, WHERE, потерянный при копировании. SQLFlow читает запрос как поток токенов, прежде чем что-то менять, и потому может назвать строку и колонку, где начинается проблема, вместо того чтобы молча выдать искалеченный текст.
Этот же проход по токенам защищает ваши данные. Наивный форматировщик прогоняет регулярное выражение по всему тексту — и тогда пробелы внутри 'привет мир' схлопываются, а запятая внутри комментария начинает новую строку. Здесь строка и комментарий — неприкосновенные единицы: то, что вы написали внутри, выйдет байт в байт, какой бы диалект вы ни выбрали.
А поскольку тот же проход строит разбор, вы получаете больше, чем аккуратный текст: инструкции файла, таблицы, которых касается каждая, CTE, соединения и параметры, ждущие значения. Это разница между запросом, который выглядит опрятно, и запросом, который вы понимаете до того, как запустить его на боевой базе.
Частые вопросы
Мой запрос отправляется на сервер?
Нет. Форматировщик и всё вокруг него работают в вашем браузере. Никакой загрузки и никаких вызовов API — запрос не покидает ваше устройство.
Какие диалекты SQL поддерживаются?
Девятнадцать: стандартный SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, DuckDB, ClickHouse, Spark, Hive, Trino, Db2, SingleStore, TiDB и N1QL. У каждого свои зарезервированные слова, правила кавычек и синтаксис параметров, а сам диалект по возможности определяется из запроса.
Меняется ли то, что делает мой запрос?
Нет. Форматирование трогает только пробелы и регистр ключевых слов. Строки, комментарии и имена в кавычках выходят ровно такими, какими вы их написали, включая пробелы внутри.
Что проверяет панель проверки?
Незакрытые кавычки, комментарии и скобки; инструкции, не начинающиеся с ключевого слова SQL; DELETE и UPDATE без WHERE; DROP и TRUNCATE; SELECT *; таблицы, соединённые запятой без условия; LIMIT без ORDER BY; INSERT без списка колонок; и отсутствующую точку с запятой в конце. Каждое замечание называет строку и колонку.
Почему при вставке запроса ничего не происходит?
Так задумано: форматировщик запускается только по кнопке «Форматировать» или Ctrl+Enter. Если хотите, чтобы он работал во время набора, включите «Форматировать во время набора» в разделе «Больше параметров».
Можно форматировать сразу несколько инструкций?
Да. Инструкции, разделённые точкой с запятой, форматируются вместе, а разбор перечисляет каждую с её таблицами, чтобы можно было сразу перейти к нужной.