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) анализирует семантику: предупреждает о потенциальных проблемах, неоптимальных конструкциях, отсутствующих индексах. Наш инструмент — именно форматтер.
Лиана Арифметова
Создатель

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

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

Был ли этот калькулятор полезен?

⚖️

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

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

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

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

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

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

🧮

Калькулятор мыловарения (SAP)

Расчёт щёлочи по SAP-числам масел для мыла с нуля. NaOH, KOH, пережир, вода.

🏠

Калькулятор садовых дорожек

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

🧮

Калькулятор платы за отопление

Расчёт платы за отопление по нормативу или показаниям ОДПУ. Тариф Гкал, площадь, ОДН.

📐

Калькулятор ROC и AUC (точность, чувствительность)

Построение ROC-кривой, расчет AUC и метрик классификации (Accuracy, F1, Recall, Precision).

📐

Калькулятор НОД и НОК

Быстрый расчет НОД и НОК для любых чисел. Разложение на простые множители (факторизация) онлайн.

📐

Калькулятор булевой алгебры

AND, OR, NOT, XOR, таблицы истинности, законы упрощения логических выражений. Для программистов и студентов.

💰

Калькулятор патента ИП (патентная система налогообложения)

Рассчитайте стоимость патента для ИП: 6% от потенциального дохода по регионам и видам деятельности. График оплаты, вычет страховых взносов.

📐

Калькулятор теории вероятностей (nPr, nCr, распределения)

Посчитать сочетания, перестановки, биномиальное и пуассоновское распределение онлайн. Калькулятор формул Бернулли и Байеса.

💻

Калькулятор UX-метрик: SUS, NPS, HEART, A/B-тест, эвристики Нильсена

Комплексный калькулятор UX-метрик: System Usability Scale (SUS), Net Promoter Score (NPS), HEART framework Google, статистическая значимость A/B-тестов, эвристическая оценка Нильсена (10 эвристик), метрики выполнения задач (Task Success Rate, Efficiency).

🧮

Генератор палиндромных дат

Поиск дат-палиндромов в разных форматах (ДД.ММ.ГГГГ, ISO, US). Ближайшая палиндромная дата, список за период.

🧮

Счётчик символов и слов онлайн

Символы с пробелами и без, слова, предложения, время чтения. Для SEO, соцсетей и копирайтинга.

⚙️

Калькулятор технического обслуживания (ТОиР)

Расчёты ТОиР: MTBF/MTTR, планирование ТО, стоимость простоя, запчасти, предиктивное ТО

💰

Налоговый калькулятор (НДС, НДФЛ, зарплата)

Универсальный калькулятор налогов: выделите или начислите НДС, рассчитайте «чистую» зарплату и взносы, оцените налоги ИП (УСН, Патент).

🏠

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

Калькулятор расходов на ребёнка. Бюджет на подгузники, питание, коляску, одежду. Стоимость первого года жизни малыша в России.

🏗️

Калькулятор водоснабжения дома

Расчёт системы водоснабжения частного дома: пиковый расход воды, диаметр труб ПНД, давление, мощность насоса, объём гидроаккумулятора.