calcal.ru
Инструмент для разработчиков и аналитиков

SQL форматтер с подсветкой синтаксиса

Преобразуйте нечитаемый SQL-запрос в аккуратно отформатированный код за секунду. Поддержка MySQL, PostgreSQL и MS SQL с подсветкой синтаксиса, минификацией и анализом структуры запроса.

4
Диалекта SQL
Standard, MySQL, PostgreSQL, MS SQL
100+
Ключевых слов
SELECT, JOIN, WHERE, CTE и другие
3
Режима отступов
2 пробела, 4 пробела, табуляция
0 сек
Время обработки
Мгновенное форматирование в браузере

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

SQL-запросы, записанные в одну строку или без единообразных отступов, сложно читать, отлаживать и поддерживать. Форматирование превращает хаотичный текст в структурированный документ, где логика запроса видна с первого взгляда.

🔍

Читаемость кода

Отформатированный SQL с выделенными ключевыми словами на отдельных строках позволяет мгновенно понять структуру запроса: откуда берутся данные, какие условия фильтрации, как группируются результаты. Это критически важно при работе с запросами на 50-100 и более строк.

🛠

Упрощение отладки

Когда каждое условие WHERE находится на своей строке, а JOIN-ы визуально отделены от основного тела запроса, поиск ошибок занимает минуты вместо часов. Неправильные условия соединения, отсутствующие фильтры и ошибки в логике становятся очевидными.

🤝

Командная работа

Единообразное форматирование SQL в команде упрощает код-ревью, уменьшает конфликты при слиянии веток и создает общий визуальный стандарт. Новые участники быстрее вникают в логику запросов, а опытные тратят меньше времени на проверку чужого кода.

Кому полезен SQL форматтер

Инструмент пригодится всем, кто работает с реляционными базами данных: от начинающих до senior-разработчиков и DBA.

💻

Код-ревью

Перед тем как отправить запрос на проверку, отформатируйте его. Ревьюер сразу увидит структуру: таблицы, соединения, условия фильтрации. Это ускоряет процесс проверки и уменьшает количество замечаний по стилю.

🐛

Отладка запросов

Скопировали запрос из логов или мониторинга? Вставьте его в форматтер, чтобы увидеть структуру. Гораздо проще найти лишний JOIN или отсутствующий индексируемый столбец в форматированном виде.

📚

Документация

Отформатированные запросы с комментариями становятся частью технической документации. Они помогают передавать знания между командами и фиксировать бизнес-логику в читаемом виде.

🎓

Обучение SQL

Начинающие разработчики и аналитики учатся писать запросы, глядя на хорошо структурированные примеры. Форматтер помогает увидеть правильную вложенность подзапросов и синтаксис JOIN-операций.

⚙

Стандарт команды

Используйте форматтер как единый стандарт оформления SQL в проекте. Настройте отступы, регистр ключевых слов и стиль — и все запросы в репозитории будут выглядеть одинаково.

🚀

Минификация

Для хранимых процедур, ORM-генерируемых запросов и API-параметров бывает нужен однострочный SQL. Режим минификации убирает все переносы, лишние пробелы и комментарии.

Основные конструкции SQL/ справочник

Каждая конструкция при форматировании выносится на отдельную строку для максимальной читаемости. Подзапросы и CTE получают дополнительный уровень отступа.

SELECT ... FROM ... WHERE

Базовый запрос выборки данных. Каждый столбец SELECT и каждое условие WHERE форматируются на отдельной строке с отступом для быстрого сканирования.

SELECT u.id, u.name, u.email FROM users u WHERE u.status = 'active' AND u.created_at >= '2024-01-01'

JOIN (соединения таблиц)

INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN выносятся на отдельные строки. Условие ON располагается с отступом под своим JOIN-ом, что позволяет сразу видеть связи между таблицами.

SELECT o.id, u.name, p.title FROM orders o INNER JOIN users u ON o.user_id = u.id LEFT JOIN products p ON o.product_id = p.id

CTE (Common Table Expressions)

WITH-выражения (CTE) делают сложные запросы модульными. Каждый CTE-блок получает отдельную секцию с именем, а основной запрос следует после закрывающей скобки.

WITH active_users AS ( SELECT id, name FROM users WHERE status = 'active' ), user_orders AS ( SELECT user_id, COUNT(*) AS cnt FROM orders GROUP BY user_id ) SELECT au.name, uo.cnt FROM active_users au JOIN user_orders uo ON au.id = uo.user_id

Оконные функции (Window Functions)

ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD() — мощные аналитические функции. Конструкция OVER(PARTITION BY ... ORDER BY ...) форматируется компактно или с переносом в зависимости от длины.

SELECT department, employee, salary, ROW_NUMBER() OVER ( PARTITION BY department ORDER BY salary DESC ) AS rank FROM employees

MySQL: поддерживает LIMIT без OFFSET, обратные кавычки для идентификаторов (`table`), AUTO_INCREMENT и специфичные функции вроде GROUP_CONCAT и IFNULL.

PostgreSQL: поддерживает RETURNING, ILIKE, массивы, JSON/JSONB операторы, генераторы серий и богатый набор типов данных вроде UUID, INTERVAL и ARRAY.

Конвенции форматирования

Единый стиль оформления SQL помогает командам быстрее читать и поддерживать запросы. Ниже приведены самые распространённые правила.

Ключевые слова — UPPERCASE

Традиционно ключевые слова SQL пишутся заглавными буквами: SELECT, FROM, WHERE, JOIN, GROUP BY. Это визуально отделяет структуру запроса (ключевые слова) от данных (имена таблиц и столбцов). Большинство команд и стайлгайдов (Google, GitLab, Uber) рекомендуют именно этот подход.

Отступы — 4 пробела

Четыре пробела — наиболее популярный размер отступа для SQL. Он обеспечивает достаточную визуальную глубину для вложенных подзапросов и CTE, при этом не смещает код слишком далеко вправо. Для компактных запросов подойдут 2 пробела, для глубокой вложенности — табуляция.

📏

Столбцы — по одному на строку

Каждый столбец в SELECT записывается на отдельной строке с запятой в конце (trailing comma) или в начале (leading comma). Это упрощает добавление и удаление столбцов через diff, а также позволяет комментировать отдельные поля без нарушения синтаксиса.

🔗

JOIN — на уровне FROM

Операторы JOIN располагаются на том же уровне отступа, что и FROM. Условие ON сдвигается на один уровень вглубь. Это создает визуальную иерархию: слева — источники данных, справа — связи между ними. При большом числе JOIN-ов структура остается прозрачной.

Советы по написанию SQL

Практические рекомендации, которые помогут писать более чистые и производительные SQL-запросы.

1Используйте алиасы таблиц

Вместо полных имен таблиц используйте короткие алиасы: users AS u, orders AS o. Это сокращает запрос и упрощает чтение. Алиасы должны быть осмысленными: первая буква или аббревиатура названия таблицы.

2Избегайте SELECT *

Всегда перечисляйте конкретные столбцы вместо SELECT *. Это улучшает производительность (меньше данных передается), делает запрос самодокументируемым и предотвращает ошибки при изменении схемы таблицы.

3Комментируйте сложную логику

Добавляйте однострочные комментарии (--) перед сложными условиями и блочные комментарии (/* */) для описания цели запроса. Форматтер сохраняет комментарии и выделяет их серым цветом для отличия от кода.

4Используйте CTE вместо подзапросов

Common Table Expressions (WITH ... AS) делают запрос читаемым и модульным. Каждый CTE-блок решает одну задачу и имеет понятное имя. Их проще тестировать по отдельности и переиспользовать в основном запросе.

5Проверяйте план выполнения

После форматирования используйте EXPLAIN (PostgreSQL, MySQL) или SET SHOWPLAN_TEXT ON (MS SQL) для анализа плана выполнения. Форматированный запрос проще соотнести с узлами плана и найти узкие места производительности.

6Заканчивайте запрос точкой с запятой

Точка с запятой (;) явно обозначает конец оператора. Это особенно важно при работе с несколькими запросами в одном скрипте, хранимых процедурах и миграциях. Форматтер автоматически разделяет запросы по точке с запятой.

Как пользоваться форматтером

Три простых шага для превращения неформатированного SQL в аккуратный код.

1

Вставьте SQL

Скопируйте SQL-запрос из IDE, лога, мониторинга или документации и вставьте в текстовое поле. Или нажмите кнопку «Пример SQL» для демонстрации.

2

Настройте параметры

Выберите диалект (MySQL, PostgreSQL, MS SQL), размер отступа (2/4 пробела или табуляция) и регистр ключевых слов (UPPERCASE или lowercase).

3

Скопируйте результат

Отформатированный SQL с подсветкой синтаксиса появится мгновенно. Нажмите «Копировать» для вставки в свой проект. Изучите статистику запроса внизу.

Часто задаваемые вопросы

Форматтер разбивает SQL-запрос на токены (ключевые слова, идентификаторы, строки, числа, комментарии), а затем собирает их обратно с правильными отступами и переносами строк. Каждое ключевое слово (SELECT, FROM, WHERE, JOIN) начинается с новой строки, столбцы и условия сдвигаются на один уровень вглубь. Всё выполняется в браузере — запрос не отправляется на сервер.
Форматтер поддерживает Standard SQL, MySQL, PostgreSQL и MS SQL (T-SQL). Разница между диалектами заключается в синтаксисе идентификаторов (обратные кавычки в MySQL, квадратные скобки в MS SQL, двойные кавычки в PostgreSQL) и специфичных функциях. Основная логика форматирования универсальна для всех диалектов.
Да. Форматирование выполняется полностью в вашем браузере на JavaScript. SQL-запрос не отправляется на сервер, не сохраняется в базу данных и не логируется. После закрытия вкладки или очистки поля ввода данные исчезают. Это безопасно для запросов с именами таблиц, структурой базы и бизнес-логикой.
Минификация — это процесс, обратный форматированию. Все переносы строк, лишние пробелы и комментарии удаляются, запрос сжимается в одну строку. Это полезно для хранимых процедур, передачи SQL через API, вставки в ORM-запросы или экономии места в конфигурационных файлах.
SQL нечувствителен к регистру: SELECT и select работают одинаково. Однако стандарт де-факто — писать ключевые слова заглавными буквами (UPPERCASE). Это визуально отделяет структуру запроса от данных: SELECT u.name FROM users u. Некоторые команды предпочитают lowercase для лучшей читаемости на тёмных темах.
4 пробела — самый популярный выбор для SQL. Они обеспечивают чёткую визуальную иерархию для вложенных подзапросов. 2 пробела подходят для компактных запросов и экранов с небольшой шириной. Табуляция позволяет каждому разработчику настроить ширину в своей IDE. Главное — единообразие в рамках проекта.
Статистика анализирует структуру SQL и показывает: количество отдельных запросов (разделённых точкой с запятой), список таблиц, на которые ссылается запрос (после FROM, JOIN, UPDATE), число условий фильтрации (WHERE, AND, OR, HAVING), количество JOIN-операций и подзапросов (вложенных SELECT). Это помогает оценить сложность запроса.
Да. Вставьте несколько SQL-запросов, разделённых точкой с запятой (;). Форматтер обработает каждый оператор отдельно и визуально разделит их пустой строкой. Статистика покажет общее число запросов, таблиц и условий по всем операторам.
Форматтер распознаёт два типа SQL-комментариев: однострочные (-- текст) и блочные (/* текст */). Комментарии сохраняются в отформатированном выводе и выделяются серым курсивом в подсветке синтаксиса. При минификации комментарии удаляются, так как цель — получить максимально компактный запрос.
Форматтер (beautifier) меняет только визуальное оформление: отступы, переносы, регистр ключевых слов. Он не проверяет корректность SQL и не находит ошибки. Линтер (linter) анализирует семантику: предупреждает о потенциальных проблемах, неоптимальных конструкциях, отсутствующих индексах. Наш инструмент — именно форматтер.
Лиана Арифметова
Создатель

Лиана Арифметова

Миссия: Демократизировать сложные расчеты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

⚖️

Отказ от ответственности

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые данным инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

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

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

Похожие инструменты

⚙️

Калькулятор трёхфазной мощности

Активная, реактивная и полная мощность. Звезда/треугольник, линейное/фазное напряжение, сечение кабеля.

💻

Генератор Open Graph тегов

Создание OG-тегов для корректного отображения ссылок в VK, Telegram, Facebook и Twitter. Предпросмотр карточки и готовый HTML-код.

💻

JSON форматтер и валидатор

Онлайн форматирование, валидация и минификация JSON с русским интерфейсом. Подсветка синтаксиса, древовидный просмотр, статистика и проверка ошибок.

🏗️

Калькулятор тепловой пушки

Подбор мощности тепловой пушки для гаража, склада или строительного объекта.

🏠

Калькулятор калорий при плавании

Расход калорий при плавании: кроль, брасс, баттерфляй, на спине. MET-метод, учёт стиля, интенсивности, бассейна.

🧮

Калькулятор доходности аренды

Чистая и валовая доходность аренды, окупаемость, ROI, Cap Rate, Cash-on-Cash. Для инвесторов.

💻

Калькулятор IP маски подсети (CIDR) онлайн

Профессиональный сетевой калькулятор. Расчет маски подсети (Subnet Mask), CIDR, адреса сети, широковещательного адреса и диапазона хостов.

🏥

Калькулятор рекомпозиции тела

Рассчитайте план питания для одновременного снижения жира и набора мышц. Калории, БЖУ, тренировочные дни и дни отдыха.

🏠

Калькулятор подарков: бюджет, идеи, годовой план

Калькулятор подарков. Бюджет на подарки, список получателей, идеи по возрасту и интересам, годовой план праздников.

🏗️

Калькулятор потолочного плинтуса

Расчёт погонных метров потолочного плинтуса (галтели), углов и клея. Пенопласт, полиуретан, ПВХ, гипс, дерево.

🧮

Калькулятор наценки и маржи

Расчёт наценки → маржа и обратно. Себестоимость → цена. Таблица соответствия наценки и маржинальности.

🏗️

Калькулятор точечных светильников (количество по площади, люксы)

Расчёт количества точечных светильников по площади комнаты и нормам освещённости СП 52.13330. Тип ламп, раскладка, шаг, энергопотребление.

🏥

Калькулятор фитотерапии: лекарственные растения, настои, настойки и сборы

Фитотерапевтические расчёты: справочник растений, расчёт настоя и настойки, совместимость трав, календарь сбора, дозировка фитопрепаратов.

🏥

Калькулятор эпидемиологии

Относительный риск RR, отношение шансов OR, NNT, чувствительность/специфичность, R₀, размер выборки для исследований.

🔄

Генератор QR-кодов онлайн (бесплатно)

Создать QR-код для ссылки, текста, визитки. Настройка цвета, логотипа. Скачать в PNG и SVG. Бесплатный генератор QR-кодов.