SQLNice

首页/博客/如何格式化 SQL 代码

如何格式化 SQL 代码:5种方法完整指南(2026)

2026-01-29
阅读时间: 8 分钟
教程

SQL 代码格式化是每个数据库开发者、数据分析师和 DBA 必备的技能。格式化良好的 SQL 代码不仅提高可读性,还能减少错误、便于团队协作、加速问题排查。本文将详细介绍 5 种格式化 SQL 代码的实用方法,从在线工具到本地 IDE,从图形界面到命令行,总有一种适合你。

无论你使用 MySQL、PostgreSQL、Oracle 还是 SQL Server,这些方法都能帮助你快速美化 SQL 代码,让混乱的查询语句变得清晰易读。

📌为什么需要格式化 SQL 代码?

在深入了解具体方法之前,让我们先理解格式化 SQL 的重要性:

  • 提高可读性:格式化后的代码结构清晰,关键字对齐,逻辑一目了然
  • 减少错误:规范的格式能帮助发现语法错误、括号不匹配等问题
  • 便于协作:团队成员遵循统一格式标准,代码审查更高效
  • 加速调试:格式化的 SQL 让子查询、JOIN、嵌套逻辑更容易理解
  • 符合规范:遵循 SQL 编码规范,提升代码专业度

🚀方法1: SQLNice 在线工具(推荐)

推荐指数:⭐⭐⭐⭐⭐ | 适用场景:所有用户,尤其是需要快速格式化的场景

SQLNice 是一款专业的免费在线 SQL 格式化工具,支持 MySQL、PostgreSQL、Oracle、SQL Server 等 12+ 种数据库。它最大的特点是智能子查询识别,能自动检测并优雅地格式化复杂的嵌套查询。

核心特性

  • 一键格式化:粘贴代码,点击按钮,瞬间完成
  • 智能子查询识别:自动识别嵌套查询并适当缩进
  • 语法高亮:关键字、函数、字符串自动着色
  • 多种格式化选项:关键字大小写、缩进宽度、换行规则可自定义
  • 完全免费:无需注册,无广告干扰

使用步骤

1
访问 SQLNice

打开浏览器,访问 sqlnice.com

2
粘贴 SQL 代码

将需要格式化的 SQL 代码粘贴到左侧编辑器

3
选择数据库类型

从顶部下拉菜单选择你的数据库(MySQL、PostgreSQL等)

4
点击格式化

点击"格式化"按钮,右侧立即显示格式化后的代码

5
复制使用

点击"复制"按钮,将格式化后的代码复制到你的项目中

示例对比

❌ 格式化前:

SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE u.status=1 AND o.created_at>'2026-01-01'

✅ 格式化后:

SELECT
    u.id,
    u.name,
    o.total
FROM users u
JOIN orders o
    ON u.id = o.user_id
WHERE u.status = 1
    AND o.created_at > '2026-01-01'

💡 为什么选择 SQLNice?

相比其他在线工具,SQLNice 的子查询格式化功能尤为出色。对于包含多层嵌套的复杂查询,SQLNice 能智能识别每一层子查询,并应用合适的缩进层级,让代码结构清晰可见。这对于处理数据分析、报表查询等复杂场景非常有用。

🛠️方法2: MySQL Workbench 自动格式化

推荐指数:⭐⭐⭐⭐ | 适用场景:MySQL 开发者,已安装 Workbench 的用户

如果你使用 MySQL 数据库,那么官方提供的 MySQL Workbench 是一个强大的数据库管理工具,内置了 SQL 格式化功能。

使用方法

  1. 打开 MySQL Workbench

    启动 Workbench 并连接到你的 MySQL 数据库

  2. 打开 SQL 编辑器

    创建新查询标签页或打开现有 SQL 文件

  3. 选择要格式化的代码

    选中需要格式化的 SQL 代码(或全选 Ctrl+A)

  4. 执行格式化

    菜单栏选择 Edit → Format → Beautify Query

    或使用快捷键:Ctrl + B(Windows)或 Cmd + B(Mac)

优缺点

✅ 优点

  • • 官方工具,稳定可靠
  • • 与数据库深度集成
  • • 支持快捷键操作
  • • 完全免费且开源

❌ 缺点

  • • 仅支持 MySQL
  • • 需要安装桌面软件
  • • 格式化选项有限
  • • 对复杂子查询支持一般

🧩方法3: VS Code 插件(SQL Formatter)

推荐指数:⭐⭐⭐⭐⭐ | 适用场景:使用 VS Code 的开发者,需要本地格式化

对于使用 Visual Studio Code 的开发者,安装 SQL 格式化插件是最便捷的选择。推荐两款优秀插件:

推荐插件

1. SQL Formatter (by adpyke)

基于 sql-formatter 库,支持多种 SQL 方言

在 VS Code Marketplace 查看

2. SQLTools (by mtxr)

功能更全面,包含格式化、连接数据库、智能补全

在 VS Code Marketplace 查看

安装和使用

  1. 安装插件

    在 VS Code 中按 Ctrl + Shift + X,搜索"SQL Formatter"并安装

  2. 打开 SQL 文件

    创建或打开 .sql 文件

  3. 格式化代码

    右键点击代码 → 选择"Format Document"

    或使用快捷键:Shift + Alt + F(Windows)或 Shift + Option + F(Mac)

  4. 自定义配置(可选)

    settings.json 中配置格式化选项

配置示例

{
  "sql-formatter.dialect": "mysql",
  "sql-formatter.uppercase": true,
  "sql-formatter.linesBetweenQueries": 2,
  "sql-formatter.indent": "  "
}

优缺点

✅ 优点

  • • 集成在开发环境中
  • • 支持保存时自动格式化
  • • 支持多种 SQL 方言
  • • 配置灵活,可团队共享

❌ 缺点

  • • 需要安装 VS Code
  • • 依赖插件更新
  • • 对超长 SQL 可能卡顿

⌨️方法4: 命令行工具(sql-formatter-cli)

推荐指数:⭐⭐⭐ | 适用场景:CI/CD 流程、批量格式化、脚本自动化

对于需要批量处理或集成到自动化流程的场景,命令行工具是最佳选择。推荐使用 sql-formatter-cli

安装

使用 npm 全局安装:

npm install -g sql-formatter-cli

或使用 yarn:

yarn global add sql-formatter-cli

使用方法

格式化单个文件:

sql-formatter -i query.sql -o formatted.sql

格式化并覆盖原文件:

sql-formatter -i query.sql --write

批量格式化目录下所有 SQL 文件:

find ./sql -name "*.sql" -exec sql-formatter -i  --write \;

指定数据库类型和选项:

sql-formatter -i query.sql --language mysql --uppercase --indent "  "

集成到 Git Hook

.git/hooks/pre-commit 中添加:

#!/bin/bash
for file in $(git diff --cached --name-only | grep -E '\.sql$'); do
  sql-formatter -i "$file" --write
  git add "$file"
done

这样每次 commit 前会自动格式化 SQL 文件。

优缺点

✅ 优点

  • • 适合自动化和批量处理
  • • 可集成到 CI/CD
  • • 速度快,适合大文件
  • • 脚本化,易于团队统一

❌ 缺点

  • • 需要 Node.js 环境
  • • 无图形界面
  • • 学习曲线稍高

🔧方法5: 自定义 Python 脚本(sql-formatter 库)

推荐指数:⭐⭐⭐ | 适用场景:需要高度定制、集成到现有 Python 项目

如果你需要完全控制格式化逻辑或集成到 Python 项目中,可以使用 sqlparse 库编写自定义脚本。

安装

pip install sqlparse

示例代码

import sqlparse

# 读取 SQL 文件
with open('query.sql', 'r', encoding='utf-8') as f:
    sql = f.read()

# 格式化
formatted_sql = sqlparse.format(
    sql,
    reindent=True,           # 重新缩进
    keyword_case='upper',    # 关键字大写
    identifier_case='lower', # 标识符小写
    indent_width=4,          # 缩进宽度
    use_space_around_operators=True  # 操作符周围加空格
)

# 保存格式化后的结果
with open('formatted.sql', 'w', encoding='utf-8') as f:
    f.write(formatted_sql)

print("格式化完成!")

批量处理脚本

import sqlparse
import os
import glob

def format_sql_files(directory):
    """批量格式化目录下所有 SQL 文件"""
    for sql_file in glob.glob(os.path.join(directory, '**/*.sql'), recursive=True):
        print(f"格式化: {sql_file}")

        with open(sql_file, 'r', encoding='utf-8') as f:
            sql = f.read()

        formatted = sqlparse.format(
            sql,
            reindent=True,
            keyword_case='upper',
            indent_width=2
        )

        with open(sql_file, 'w', encoding='utf-8') as f:
            f.write(formatted)

    print("所有文件格式化完成!")

# 使用
format_sql_files('./sql_queries')

优缺点

✅ 优点

  • • 完全可定制
  • • 易于集成到 Python 项目
  • • 可添加自定义逻辑
  • • 适合复杂场景

❌ 缺点

  • • 需要 Python 环境
  • • 需要编写和维护代码
  • • 对非开发者不友好

📊5种方法对比总结

方法推荐指数适用场景优势
SQLNice 在线工具⭐⭐⭐⭐⭐所有用户免费、快速、子查询识别
MySQL Workbench⭐⭐⭐⭐MySQL 用户官方、稳定、集成
VS Code 插件⭐⭐⭐⭐⭐VS Code 开发者便捷、自动化、配置灵活
命令行工具⭐⭐⭐CI/CD、批量处理自动化、批量、快速
Python 脚本⭐⭐⭐定制化需求灵活、可定制、可扩展

💡SQL 格式化最佳实践

1. 制定团队规范

统一关键字大小写(推荐全大写)、缩进宽度(推荐 2 或 4 空格)、换行规则等,并通过代码审查强制执行。

2. 定期格式化

不要等到代码混乱不堪才格式化,建议每次修改后立即格式化,或使用 Git Hook 自动化。

3. 注意复杂查询

对于包含多层子查询、CTE、窗口函数的复杂 SQL,格式化后务必检查逻辑是否正确,必要时添加注释。

4. 选择合适工具

个人使用推荐 SQLNice 或 VS Code 插件;团队协作推荐命令行工具并集成到 CI;简单场景用 IDE 自带功能即可。

常见问题 FAQ

格式化会改变 SQL 的执行结果吗?

不会。格式化只改变空白字符(空格、换行、缩进)和关键字大小写,不会改变 SQL 的语义和执行结果。但建议格式化后测试一下,确保工具没有 bug。

格式化后代码变长了,性能会受影响吗?

不会。数据库在执行前会解析 SQL,空白字符对性能没有影响。可读性带来的维护效率提升远超过几个字节的代码大小增加。

如何格式化存储过程和函数?

大部分工具都支持存储过程格式化,但效果可能不如单条 SQL 理想。推荐使用数据库自带工具(如 SQL Server 的 SSMS)或专业 IDE。

免费工具和付费工具差别大吗?

对于基础格式化,免费工具(如 SQLNice、VS Code 插件)完全够用。付费工具(如 SQL Prompt)提供更多高级功能,如代码补全、重构、性能分析等,适合专业 DBA。

🎯总结

本文详细介绍了 5 种格式化 SQL 代码的方法,从在线工具到本地 IDE,从图形界面到命令行,覆盖了各种使用场景:

  • 快速格式化:使用 SQLNice 在线工具,免费且支持子查询识别
  • MySQL 用户:使用 MySQL Workbench 的内置格式化功能
  • VS Code 开发者:安装 SQL Formatter 插件,集成到开发流程
  • 自动化场景:使用命令行工具,集成到 CI/CD 或 Git Hook
  • 定制化需求:编写 Python 脚本,完全控制格式化逻辑

无论你选择哪种方法,重要的是养成格式化 SQL 代码的习惯。清晰的代码结构不仅提升个人效率,更能促进团队协作,减少 bug,让数据库开发工作更加顺畅。

立即尝试 SQLNice

免费在线 SQL 格式化工具,支持 12+ 种数据库,智能子查询识别

开始格式化 SQL

📚 更多 SQL 技巧和教程即将发布,敬请期待...