SQL форматтер
с подсветкой синтаксиса
Зачем форматировать 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.idCTE (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 employeesMySQL: поддерживает 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 в аккуратный код.
Вставьте SQL
Скопируйте SQL-запрос из IDE, лога, мониторинга или документации и вставьте в текстовое поле. Или нажмите кнопку «Пример SQL» для демонстрации.
Настройте параметры
Выберите диалект (MySQL, PostgreSQL, MS SQL), размер отступа (2/4 пробела или табуляция) и регистр ключевых слов (UPPERCASE или lowercase).
Скопируйте результат
Отформатированный SQL с подсветкой синтаксиса появится мгновенно. Нажмите «Копировать» для вставки в свой проект. Изучите статистику запроса внизу.
Часто задаваемые вопросы
Был ли этот калькулятор полезен?
Инструмент справочный — не заменяет эксперта
Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.
Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.
Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.
Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.
Похожие калькуляторы
Калькулятор размера базы данных
Расчёты БД: размер таблиц, IOPS, память, индексы, репликация, шардирование
/database-sizing-calculatorОбъединить PDF онлайн — без загрузки на сервер
Склейка PDF в браузере через pdf-lib. До 20 файлов, до 50 МБ каждый. Локально, без отправки на сервер (152-ФЗ).
/obyedinit-pdf-onlajn-besplatnoСжать PDF онлайн — уменьшить размер локально
Сжатие PDF в браузере без потери качества. 3 уровня (object streams, удаление метаданных). До 50 МБ. Через pdf-lib, локально.
/szhat-pdf-onlajn-umenshit-razmerРазделить PDF на страницы — извлечь нужные онлайн
Разделение PDF на страницы локально: каждая страница отдельным файлом, диапазон или группами. Через pdf-lib, без отправки на сервер.
/razdelit-pdf-na-stranicy-onlajnJPG в PDF — конвертер с объединением
Конвертация JPG/PNG в PDF в браузере: до 30 картинок в один документ. Форматы A4/A3/Letter или подгонка под изображение.
/jpg-v-pdf-konverterПовернуть страницы PDF онлайн
Поворот всех или указанных страниц PDF на 90/180/270° за миллисекунды. Lossless. Через pdf-lib, без отправки на сервер.
/povernut-pdf-stranitsy-onlajnВодяной знак на PDF онлайн (кириллица)
Нанесение текстового знака («КОНФИДЕНЦИАЛЬНО», «ЧЕРНОВИК») на все страницы PDF. Поддержка русского текста через Canvas. 4 положения, регулировка прозрачности.
/dobavit-vodyanoj-znak-na-pdfНумерация страниц PDF онлайн
Проставьте номера страниц PDF в браузере: 4 формата, 6 положений, пропуск титульной, кастомный старт. Поддержка кириллицы. Через pdf-lib + Canvas.
/numerovat-stranitsy-pdf-onlajnPDF в JPG / PNG — конвертер страниц
Рендеринг каждой страницы PDF в картинку через pdfjs-dist (Mozilla). 4 уровня качества: 96 / 150 / 300 DPI и lossless PNG. До 50 МБ.
/pdf-v-jpg-konverter-onlajnИзвлечь текст из PDF онлайн
Извлечение текста из PDF в браузере через pdfjs-dist (Mozilla). Plain text, с разделителями страниц или JSON. Файлы не уходят на сервер.
/extract-text-iz-pdf-onlajnСжать JPG до 100 КБ для документов
Сжатие JPG до точного размера в КБ (50, 100, 200, 500, 1000) через бинарный поиск quality. Госуслуги, ЕГЭ, банки. Через browser-image-compression.
/szhat-jpg-onlajn-do-100kbУдалить EXIF из фото — GPS и метаданные
Удаление EXIF (геолокация, модель камеры, дата) из JPEG. Сначала показывает что внутри, потом удаляет. 152-ФЗ. В браузере, без отправки.
/udalit-exif-iz-foto-onlineИзменить размер фото в пикселях
Изменение размера JPG/PNG/WebP с сохранением пропорций. 6 пресетов (Full HD, HD, 1080×1080, 9:16). Через Canvas API, без сервера.
/izmenit-razmer-foto-onlajn-px-mbWebP в JPG / PNG — конвертер онлайн
Конвертация WebP → JPG / PNG в браузере. До 30 файлов одновременно. Через Canvas API, без сервера. Поддержка Госуслуг и старых форм.
/webp-v-jpg-png-konverterПовернуть фото — точно по градусам
Поворот картинки на любой угол (90°/произвольный) с превью. Цвет фона для уголков при произвольных углах. JPG/PNG/WebP. Через Canvas.
/povernut-foto-onlajn-besplatno