如何格式化 SQL 查询
杂乱的 SQL 是引入 bug 的最快方式之一。当查询是没有缩进的一长行时,很难看出哪些条件适用于哪些连接、子查询从哪里开始和结束,或逻辑是否正确。
为什么格式化很重要
- 调试· 格式良好的查询让逻辑错误可见。您可以从 SELECT 到 WHERE 再到 JOIN 沿着流程走,而不用猜。
- 代码审查· 审查者能在数秒内读懂格式化的 SQL。一行式查询会迫使他们先在脑中解析。
- 维护· 当您数月后回到一个查询时,格式化能让您一目了然地看到它在做什么。
- 协作· 团队一致的格式化意味着每个人都以相同方式阅读 SQL。
如何格式化 SQL
- 粘贴您的 SQL· 将压缩或杂乱的查询输入格式化器。它处理 SELECT、INSERT、UPDATE、DELETE、CREATE TABLE,以及含子查询和连接的复杂查询。
- 配置选项· 选择缩进大小以及关键字是否大写。匹配您项目的代码风格指南。
- 复制结果· 格式化后的 SQL 已可粘贴回您的编辑器、数据库客户端或文档中。
良好格式化的样子
像 select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc 这样的查询变为:
SELECT
u.name,
o.total
FROM users u
JOIN orders o
ON u.id = o.user_id
WHERE o.total > 100
AND u.active = 1
ORDER BY o.total DESC
每个子句独占一行。条件在父子句下缩进。连接及其 ON 条件清晰地配对。
小贴士
- 提交前格式化· 在将 SQL 加入版本控制前先通过格式化器处理。这让 diff 保持整洁,让审查专注于逻辑而非风格。
- 关键字大小写保持一致· 选择大写或小写并在整个项目中保持一致。混合风格让查询难以阅读。
- 拆分复杂查询· 如果即便格式化后查询仍难以阅读,请将其拆分为 CTE(公共表表达式)或视图。格式化无法修复本质上复杂的逻辑。
- 检查语法高亮· 好的格式化器提供区分关键字、字符串和数字的语法高亮,有助于发现拼写错误。
常见问题
SQL 关键字应该大写吗?
将 SQL 关键字大写(SELECT、FROM、WHERE)而将表或列名小写是广泛遵循的约定。这让查询在视觉上更易读。大多数风格指南都推荐这样做,但没有数据库引擎强制要求。
格式化会改变查询的执行吗?
不会。空白和缩进对 SQL 执行没有影响。格式化纯粹是为了人类可读性。压缩的查询和缩进的查询产生相同的结果。
应该使用什么缩进大小?
2 或 4 空格都常见。选择您团队使用的并保持一致。大多数 SQL 格式化器允许您配置。
我的 SQL 会发送到服务器吗?
不会。格式化完全在您的浏览器中进行。您的查询从不离开您的设备。