Menu

SQL 格式化工具

按语法智能缩进,美化 SQL 查询。

作者 Nethanel Bar, Co-founder & CEO

最后更新

准备好真正学会编程了吗?

Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。

SQL 格式化工具是什么?

SQL 格式化工具会把密集的、写成一行的或自动生成的 SQL,用统一的缩进和换行重新排版。开发者和数据分析师会在这些时候用到它:审查连接、调试过滤条件、整理 ORM 输出、在工单或文档里分享查询,以及逐步分析查询计划。

格式化不会改变查询的作用,只会改变人读它的难易程度。排版统一之后,SELECT、FROM、JOIN、WHERE、GROUP BY、HAVING 和 ORDER BY 之间的关系就容易检查多了,尤其是混用了子查询和 CTE 的查询。

SQL 有很多方言:PostgreSQL、MySQL、SQLite、T-SQL(Microsoft SQL Server)、Oracle 和 BigQuery 都在标准之上扩展了各自的语法。好的格式化工具能理解你选择的方言,不会破坏数据库特有的语法。

格式化 SQL 时你会学到

  • 每个 SQL 子句都有特定的作用:SELECT 选择列,FROM 选择表,WHERE 过滤行,GROUP BY 分组聚合,ORDER BY 排序。
  • 清晰的缩进能让嵌套查询、连接和条件一目了然,而在单行查询里它们几乎看不出来。
  • 方言很重要:RETURNING、LIMIT、TOP 以及带括号的标识符([col] 和 "col")在不同数据库之间并不通用。
  • 写得好的格式化工具会保留注释,所以你可以在过滤条件旁边直接说明它为什么存在。

SQL 查询格式化步骤

  1. 粘贴查询

    把你的 SQL 放进输入框。单行的、ORM 生成的或者只格式化了一部分的 SQL 都可以。

  2. 选择方言

    选择 PostgreSQL、MySQL、SQLite 或 T-SQL,让格式化工具正确处理 LIMIT、TOP、RETURNING 这类数据库特有的关键字。

  3. 设置样式

    选择关键字大小写(大写是标准做法)和缩进宽度(2 或 4 个空格)。大多数团队选择大写关键字加 2 个空格缩进。

  4. 查看格式化结果

    每个子句各占一行,连接对齐,子查询缩进。注释会被保留。

  5. 复制回你的项目

    把格式化后的查询粘贴到你的迁移脚本、ORM 原生查询或 BI 工具中。所有内容都留在你的浏览器里。

SQL 子句速查

95% 的 SELECT 查询里都会出现的子句,按概念上的处理顺序排列。官方参考:PostgreSQL SELECT、MySQL SELECT。

子句作用示例
SELECT选择要返回的列或表达式SELECT id, name
FROM选择数据来源的表FROM users
JOIN ... ON合并另一张表中的行JOIN orders ON orders.user_id = users.id
WHERE在分组前过滤行WHERE active = true
GROUP BY把值相同的行聚合在一起GROUP BY country
HAVING过滤聚合后的分组HAVING COUNT(*) > 10
ORDER BY对结果集排序ORDER BY created_at DESC
LIMIT / OFFSET对结果分页LIMIT 20 OFFSET 40
WITH ... AS公用表表达式(CTE):给子查询命名WITH active AS (...)

可以试试的 SQL 示例

格式化一个简单查询

输入
select id,name from users where active=true order by created_at desc limit 10
格式化后
SELECT  id,  nameFROM usersWHERE active = trueORDER BY created_at DESCLIMIT 10;

现在每个子句各占一行,列清单也缩进了。在代码审查中看这个查询,轻松了不止十倍。

查看一个连接

输入
select u.name,o.total from users u join orders o on o.user_id=u.id where o.total>100
格式化后
SELECT  u.name,  o.totalFROM users uJOIN orders o ON o.user_id = u.idWHERE o.total > 100;

给表起别名(users u、orders o)能让列清单保持简短。JOIN ... ON 这一行把表之间的关系写得清清楚楚。

读懂嵌套子查询

输入
select * from users where id in (select user_id from enrollments where course_id=5)
格式化后
SELECT *FROM usersWHERE id IN (  SELECT user_id  FROM enrollments  WHERE course_id = 5);

把内层查询缩进后,依赖关系一目了然。结构清楚之后,很多子查询都可以改写成 JOIN 或 CTE。

美化压缩成一行的 ORM 输出

输入
SELECT "posts"."id", "posts"."title", "users"."name" FROM "posts" INNER JOIN "users" ON "users"."id" = "posts"."author_id" WHERE "posts"."published" = true AND "posts"."created_at" > '2026-01-01' ORDER BY "posts"."created_at" DESC LIMIT 25
美化后
SELECT  "posts"."id",  "posts"."title",  "users"."name"FROM "posts"INNER JOIN "users" ON "users"."id" = "posts"."author_id"WHERE "posts"."published" = true  AND "posts"."created_at" > '2026-01-01'ORDER BY "posts"."created_at" DESCLIMIT 25;

Prisma、Django、ActiveRecord 这类 ORM 会把 SQL 记录成很长的一行。美化工具把它拆分成子句,并缩进串联的 WHERE 条件,这样在把查询贴进工单之前,你就能真正看懂它在做什么。

SQL 格式化的常见错误

  • 以为格式化后的 SQL 就是正确的 SQL。格式化只改变排版,不改变语义:看起来整洁的查询仍然可能算出错误的结果。
  • 在格式化的同时修改了查询,却忘了重新测试结果。
  • 忽略方言:PostgreSQL 的 LIMIT 10、T-SQL 的 TOP 10 和标准 SQL 的 FETCH FIRST 10 ROWS ONLY 作用完全相同。
  • 在同一个项目里混用关键字大小写(Select、SELECT、select)。选定一种风格并保持一致,大多数团队使用大写关键字。

SQL 格式化常见问题

格式化 SQL 会改变查询结果吗?

不会。格式化只改变空白和大小写。数据库会把两个版本解析成同样的查询计划,所以返回的行完全一样。

为什么要格式化 SQL?

可读的 SQL 更容易调试、做代码审查、用来教学和维护,尤其是包含多个连接、子查询、CTE 或窗口函数的查询。

SQL 方言是什么?

SQL 方言是某个数据库在标准 SQL 基础上做的扩展。PostgreSQL、MySQL、SQLite、T-SQL(SQL Server)、Oracle 和 BigQuery 都有超出 SQL 标准的独有语法。

SQL 格式化工具能修复有问题的查询吗?

格式化工具把查询重新输出成结构化的形式,能帮你发现语法问题,但它不了解你的数据库结构,也无法保证查询在逻辑上是正确的。

SQL 关键字应该大写吗?
大多数风格指南建议关键字大写(SELECT、FROM、WHERE),标识符小写,因为这种视觉对比能让查询结构更加醒目。选定一种风格并保持一致即可。
SQL 格式化和 SQL 美化有什么区别?

它们是同一件事的两种叫法。“美化”和“格式化”都是指用统一的缩进、换行和关键字大小写重写查询,让它更容易阅读。无论你搜的是 SQL 美化、SQL 排版还是 SQL 格式化,这个工具都能搞定:粘贴查询,选择方言,然后复制整洁的版本。

怎么免费在线格式化 SQL 查询?

把查询粘贴到输入框,选择方言(PostgreSQL、MySQL、SQLite 或 T-SQL),格式化工具会立即重新缩进,让每个子句各占一行。完全免费,无需注册,而且一切都在你的浏览器中运行:你的 SQL 不会被上传,所以处理公司内部或生产环境的查询也很安全。

了解更多

其他开发者工具

Coddy 编程语言插图

和 Coddy 一起学编程

开始