SQL 格式化

SQL 语句格式化和美化工具

SQL 格式化工具

SQL 格式化工具可以将压缩或混乱的 SQL 语句转换为格式规范、易于阅读的形式。支持自动缩进、换行、关键字大写等功能,同时提供 SQL 压缩功能,适用于各种数据库系统。

✨ 主要特性

  • 🎯 智能格式化:自动添加适当的缩进和换行
  • 🔤 关键字大写:SQL 关键字自动转换为大写
  • 📦 压缩功能:移除多余空格,压缩 SQL 语句
  • 🗄️ 多数据库支持:兼容 MySQL、PostgreSQL、Oracle、SQL Server
  • 📋 一键复制:格式化结果可直接复制使用

📖 使用示例

格式化示例

输入:

SELECT u.id,u.name,u.email FROM users u WHERE u.status='active' ORDER BY u.created_at DESC;

输出:

SELECT
  u.id,
  u.name,
  u.email
FROM
  users u
WHERE
  u.status = 'active'
ORDER BY
  u.created_at DESC;

复杂查询格式化

输入:

SELECT u.id,u.name,p.title,COUNT(c.id) as comment_count FROM users u LEFT JOIN posts p ON u.id=p.user_id LEFT JOIN comments c ON p.id=c.post_id WHERE u.status='active' AND p.published_at IS NOT NULL GROUP BY u.id,p.id HAVING COUNT(c.id)>5 ORDER BY comment_count DESC LIMIT 10;

输出:

SELECT
  u.id,
  u.name,
  p.title,
  COUNT(c.id) AS comment_count
FROM
  users u
  LEFT JOIN posts p ON u.id = p.user_id
  LEFT JOIN comments c ON p.id = c.post_id
WHERE
  u.status = 'active'
  AND p.published_at IS NOT NULL
GROUP BY
  u.id,
  p.id
HAVING
  COUNT(c.id) > 5
ORDER BY
  comment_count DESC
LIMIT
  10;

🎯 应用场景

1. 代码审查

在代码审查过程中,格式化 SQL 语句提高可读性:

-- 格式化前(难以阅读)
SELECT u.id,u.name,u.email,p.title FROM users u LEFT JOIN posts p ON u.id=p.user_id WHERE u.status='active';

-- 格式化后(清晰易读)
SELECT
  u.id,
  u.name,
  u.email,
  p.title
FROM
  users u
  LEFT JOIN posts p ON u.id = p.user_id
WHERE
  u.status = 'active';

2. 文档编写

在技术文档中展示格式规范的 SQL 示例:

-- 用户数据查询示例
SELECT
  u.id AS user_id,
  u.username,
  u.email,
  u.created_at,
  COUNT(p.id) AS post_count
FROM
  users u
  LEFT JOIN posts p ON u.id = p.author_id
WHERE
  u.status = 'active'
  AND u.email_verified = 1
GROUP BY
  u.id
ORDER BY
  u.created_at DESC;

3. 性能优化

格式化复杂查询,便于分析和优化:

-- 优化前的复杂查询
SELECT
  o.id,
  o.order_number,
  u.username,
  SUM(oi.quantity * oi.price) AS total_amount
FROM
  orders o
  INNER JOIN users u ON o.user_id = u.id
  INNER JOIN order_items oi ON o.id = oi.order_id
  INNER JOIN products p ON oi.product_id = p.id
WHERE
  o.created_at >= '2024-01-01'
  AND o.status = 'completed'
  AND p.category_id IN (1, 2, 3)
GROUP BY
  o.id,
  o.order_number,
  u.username
HAVING
  SUM(oi.quantity * oi.price) > 100
ORDER BY
  total_amount DESC;

4. 数据库迁移

整理和格式化迁移脚本中的 SQL 语句:

-- 创建用户表
CREATE TABLE users (
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(100) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 创建索引
CREATE INDEX idx_users_email ON users (email);
CREATE INDEX idx_users_created_at ON users (created_at);

🔧 技术细节

格式化规则

SQL 格式化遵循以下规则:

关键字处理:

  • SELECT、FROM、WHERE、ORDER BY 等关键字大写
  • 每个主要子句独占一行
  • 子查询适当缩进

字段和表名:

  • 多个字段时每个字段一行
  • 表别名保持原样
  • 长字段名自动换行

条件语句:

  • AND、OR 操作符前换行
  • 复杂条件适当分组
  • 括号内容保持对齐

JOIN 语句:

  • 每个 JOIN 独占一行
  • ON 条件适当缩进
  • 多个 JOIN 条件垂直对齐

支持的语法

工具支持标准 SQL 语法和主流数据库扩展:

基础语句:

  • SELECT、INSERT、UPDATE、DELETE
  • CREATE、ALTER、DROP
  • GRANT、REVOKE

高级特性:

  • 子查询和 CTE(公用表表达式)
  • 窗口函数和分析函数
  • 存储过程和函数调用
  • 触发器和视图定义

数据库兼容性:

  • MySQL 5.7+ / 8.0+
  • PostgreSQL 9.6+
  • Oracle 11g+
  • SQL Server 2012+
  • SQLite 3.x

💡 使用技巧

  • 批量处理:可以同时格式化多个 SQL 语句,用分号分隔
  • 保留注释:格式化过程会保留 SQL 注释内容
  • 自定义缩进:工具使用 2 个空格作为缩进单位
  • 压缩功能:需要压缩 SQL 时使用压缩按钮,适合生产环境

⚠️ 注意事项

  1. 语法检查:工具主要用于格式化,不提供完整的语法验证
  2. 数据安全:格式化过程在浏览器本地进行,不会上传数据
  3. 复杂语句:极其复杂的 SQL 可能需要手动调整格式
  4. 方言差异:某些数据库特有语法可能格式化效果不佳

🚀 开始使用

  1. 在上方输入框中输入要处理的内容
  2. 点击相应的操作按钮
  3. 查看处理结果
  4. 复制或下载结果

提示:工具支持多种数据格式,请确保输入内容格式正确。