格式化一个简单查询
select id,name from users where active=true order by created_at desc limit 10SELECT id, nameFROM usersWHERE active = trueORDER BY created_at DESCLIMIT 10;现在每个子句各占一行,列清单也缩进了。在代码审查中看这个查询,轻松了不止十倍。
按语法智能缩进,美化 SQL 查询。
最后更新
Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。
SQL 格式化工具会把密集的、写成一行的或自动生成的 SQL,用统一的缩进和换行重新排版。开发者和数据分析师会在这些时候用到它:审查连接、调试过滤条件、整理 ORM 输出、在工单或文档里分享查询,以及逐步分析查询计划。
格式化不会改变查询的作用,只会改变人读它的难易程度。排版统一之后,SELECT、FROM、JOIN、WHERE、GROUP BY、HAVING 和 ORDER BY 之间的关系就容易检查多了,尤其是混用了子查询和 CTE 的查询。
SQL 有很多方言:PostgreSQL、MySQL、SQLite、T-SQL(Microsoft SQL Server)、Oracle 和 BigQuery 都在标准之上扩展了各自的语法。好的格式化工具能理解你选择的方言,不会破坏数据库特有的语法。
SELECT 选择列,FROM 选择表,WHERE 过滤行,GROUP BY 分组聚合,ORDER BY 排序。RETURNING、LIMIT、TOP 以及带括号的标识符([col] 和 "col")在不同数据库之间并不通用。把你的 SQL 放进输入框。单行的、ORM 生成的或者只格式化了一部分的 SQL 都可以。
选择 PostgreSQL、MySQL、SQLite 或 T-SQL,让格式化工具正确处理 LIMIT、TOP、RETURNING 这类数据库特有的关键字。
选择关键字大小写(大写是标准做法)和缩进宽度(2 或 4 个空格)。大多数团队选择大写关键字加 2 个空格缩进。
每个子句各占一行,连接对齐,子查询缩进。注释会被保留。
把格式化后的查询粘贴到你的迁移脚本、ORM 原生查询或 BI 工具中。所有内容都留在你的浏览器里。
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 (...) |
select id,name from users where active=true order by created_at desc limit 10SELECT 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>100SELECT 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。
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 25SELECT "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 条件,这样在把查询贴进工单之前,你就能真正看懂它在做什么。
LIMIT 10、T-SQL 的 TOP 10 和标准 SQL 的 FETCH FIRST 10 ROWS ONLY 作用完全相同。Select、SELECT、select)。选定一种风格并保持一致,大多数团队使用大写关键字。不会。格式化只改变空白和大小写。数据库会把两个版本解析成同样的查询计划,所以返回的行完全一样。
可读的 SQL 更容易调试、做代码审查、用来教学和维护,尤其是包含多个连接、子查询、CTE 或窗口函数的查询。
SQL 方言是某个数据库在标准 SQL 基础上做的扩展。PostgreSQL、MySQL、SQLite、T-SQL(SQL Server)、Oracle 和 BigQuery 都有超出 SQL 标准的独有语法。
格式化工具把查询重新输出成结构化的形式,能帮你发现语法问题,但它不了解你的数据库结构,也无法保证查询在逻辑上是正确的。
SELECT、FROM、WHERE),标识符小写,因为这种视觉对比能让查询结构更加醒目。选定一种风格并保持一致即可。它们是同一件事的两种叫法。“美化”和“格式化”都是指用统一的缩进、换行和关键字大小写重写查询,让它更容易阅读。无论你搜的是 SQL 美化、SQL 排版还是 SQL 格式化,这个工具都能搞定:粘贴查询,选择方言,然后复制整洁的版本。
把查询粘贴到输入框,选择方言(PostgreSQL、MySQL、SQLite 或 T-SQL),格式化工具会立即重新缩进,让每个子句各占一行。完全免费,无需注册,而且一切都在你的浏览器中运行:你的 SQL 不会被上传,所以处理公司内部或生产环境的查询也很安全。