Полное руководство по форматированию SQL: украшение, минификация и советы по отладке

Утилиты

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

-- ❌ Сжато в одну строку—трудно читать
SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE o.status='paid' AND o.created_at>'2024-01-01' ORDER BY o.total DESC LIMIT 10;

-- ✅ Отформатировано—структура ясна
SELECT
  u.id,
  u.name,
  o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.status = 'paid'
  AND o.created_at > '2024-01-01'
ORDER BY o.total DESC
LIMIT 10;

Форматирование делает поток SELECT → FROM → JOIN → WHERE → ORDER BY очевидным с первого взгляда.


Использование форматера SQL от ToolsKu

Шаги

  1. Откройте Форматер SQL
  2. Вставьте ваш SQL
  3. Автоматическое украшение (ключевые слова в верхнем регистре, выровненные отступы)
  4. Переключитесь в режим минификации для удаления пробелов

Поддерживаемые диалекты SQL

Диалект Примечания
SQL Стандартный SQL
MySQL Специфичный синтаксис MySQL
PostgreSQL Специфичный синтаксис PostgreSQL
SQLite Лёгкая база данных
T-SQL SQL Server
PL/SQL Oracle

Соглашения по форматированию

Ключевые слова в верхнем регистре

SELECT, FROM, WHERE, JOIN, ON, AND, OR, ORDER BY, GROUP BY, HAVING, LIMIT

Правила отступов

SELECT
  column1,
  column2,
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE default_result
  END AS calculated
FROM table1
  JOIN table2 ON table1.id = table2.ref_id
WHERE status = 'active'
  AND created_at >= '2024-01-01'
GROUP BY column1, column2
HAVING COUNT(*) > 5
ORDER BY column1 DESC;

Отступы в подзапросах

SELECT *
FROM (
  SELECT
    user_id,
    SUM(amount) AS total
  FROM orders
  WHERE status = 'paid'
  GROUP BY user_id
) AS user_totals
WHERE total > 1000;

Практические сценарии

1. Отладка SQL из логов

Логи продакшена часто выводят минифицированный SQL:

[2024-06-01 10:00:00] QUERY: SELECT * FROM users WHERE email='test@example.com' AND deleted_at IS NULL

Скопируйте в Форматер SQL для ясного анализа.

2. SQL, сгенерированный ORM

// Sequelize / TypeORM SQL часто неформатирован
console.log(query.getSql());
// → SELECT `User`.`id`, `User`.`name` FROM `users` AS `User` WHERE ...

Отформатируйте, чтобы увидеть, что ORM фактически выполняет.

3. JSON в SQL

API возвращает массив JSON—вам нужны INSERT-выражения:

[
  {"name": "Alice", "age": 30},
  {"name": "Bob", "age": 25}
]

Используйте JSON в SQL для генерации:

INSERT INTO users (name, age) VALUES ('Alice', 30);
INSERT INTO users (name, age) VALUES ('Bob', 25);

4. Минификация SQL (экономия трафика)

Отформатированный SQL—для чтения; минифицированный—для передачи:

-- Отформатировано: 15 строк, 380 символов
-- Минифицировано: 1 строка, 195 символов (на 49% меньше)

Частые проблемы форматирования SQL

Ключевые слова внутри строк остаются в нижнем регистре

-- ✅ Правильно: 'select' внутри строки не изменяется
SELECT * FROM logs WHERE message LIKE '%select%'

Комментарии сохраняются

SELECT id, name  -- username
FROM users       /* active user count */
WHERE status = 1

Форматер сохраняет строчные комментарии -- и блочные комментарии /* */.


Итоги

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

#SQL#格式化#数据库#查询优化#开发