SQL格式化最佳实践:写出可读性强的SQL语句
2026年2月 · 阅读时间 5分钟
你有没有接手过别人写的SQL,一行几百个字符,完全看不懂?SQL格式化不只是美观问题,更是团队协作和代码维护的基础。
为什么要格式化SQL?
- 可读性 — 格式化的SQL一眼就能看出查询逻辑
- 可维护性 — 修改条件、添加字段更方便
- Code Review — 团队审查代码时效率更高
- 调试效率 — 快速定位问题所在的子句
❌ 反面示例
select u.id,u.name,u.email,o.order_id,o.amount,o.created_at from users u inner join orders o on u.id=o.user_id where u.status='active' and o.amount>100 and o.created_at>'2026-01-01' order by o.created_at desc limit 50;
✅ 格式化后
SELECT
u.id,
u.name,
u.email,
o.order_id,
o.amount,
o.created_at
FROM users u
INNER JOIN orders o
ON u.id = o.user_id
WHERE u.status = 'active'
AND o.amount > 100
AND o.created_at > '2026-01-01'
ORDER BY o.created_at DESC
LIMIT 50;
格式化规则
1️⃣ 关键词大写 — SELECT, FROM, WHERE, JOIN 等用大写
2️⃣ 每个子句换行 — SELECT, FROM, WHERE, ORDER BY 各占一行
3️⃣ 字段列表缩进 — SELECT后的字段每个一行,缩进2空格
4️⃣ 条件对齐 — AND/OR 缩进对齐,逻辑一目了然
5️⃣ JOIN单独一行 — ON条件缩进
6️⃣ 子查询额外缩进 — 嵌套查询增加一级缩进
命名约定
- 表名和字段名用
snake_case(user_name, order_id) - 表别名简短有意义(users → u, orders → o)
- 避免使用保留字作为字段名(如 order, select, group)
- 布尔字段用 is_ 或 has_ 前缀(is_active, has_paid)
- 时间字段用 _at 后缀(created_at, updated_at)
常见错误
- ❌ SELECT * — 明确列出需要的字段
- ❌ 不加表别名 — 多表查询时字段来源不明
- ❌ WHERE 1=1 — 虽然方便拼接但不够优雅
- ❌ 混用大小写关键词 — Select ... From ... where — 保持一致
在线格式化工具
手动格式化太麻烦?用我们的 SQL在线格式化工具,一键完成:
- 自动格式化和缩进
- 关键词自动大写
- SQL压缩(去除多余空白)
- 支持复杂查询(JOIN、子查询、UNION)
更多开发者工具请访问 www.cyunyun.com。