一套优秀的 SQL 书写规范,核心目标只有两个:易读和易维护。当你的代码结构清晰、风格统一时,不仅能让自己在几个月后还能看懂,也能让团队成员快速理解你的逻辑。

这里整理了一套在工业界广泛使用、可直接落地的 SQL 书写规范。

🎨 核心风格:关键字大写与换行

这是提升可读性最立竿见影的方法。

  • 关键字大写:所有 SQL 关键字(如 SELECT, FROM, WHERE, JOIN, AND, OR, GROUP BY, ORDER BY 等)统一使用大写。这能让它们从代码中“跳”出来,一眼看清语句的骨架。

  • 子句分行:每个主要的子句(SELECT, FROM, WHERE 等)都应该另起一行。

  • 缩进:使用 4 个空格进行缩进,以表示层级关系。禁止使用 Tab 键,因为不同编辑器对 Tab 的显示宽度不同,会导致代码错位。

📝 列表与逗号规范

当查询或插入的字段较多时,如何排版至关重要。

  • 多字段换行:如果 SELECT 或 INSERT 的字段超过 3 个,或者单行长度超过 80 个字符,就应该换行。

  • 逗号前置:将逗号放在每一行的开头,而不是结尾。这样做的好处是,当你需要注释掉某一行或调整字段顺序时,不会因为忘记处理逗号而导致语法错误。

  • 逗号对齐:让所有逗号在垂直方向上对齐,视觉上更整洁。

示例:

🧩 JOIN 与子查询规范

复杂查询是 SQL 的精髓,也是混乱的重灾区。

  • 明确 JOIN 类型:永远不要使用隐式的 FROM table1, table2 WHERE… 连接方式。始终使用 INNER JOIN, LEFT JOIN 等明确的关键字。

  • ON 条件另起一行:JOIN 的 ON 条件应该与 JOIN 关键字对齐,并另起一行。

  • 子查询缩进:子查询(Subquery)或公用表表达式(CTE)应该比外层查询多缩进 4 个空格,以示层级。

示例:

✨ 其他细节与习惯

  • 使用别名(Alias):当涉及多表查询时,为表名设置简短的别名(如 FROM users AS u),并在所有字段前加上别名前缀(如 u.username)。这能避免字段名冲突,也让代码更清晰。

  • 善用注释:对于复杂的业务逻辑、窗口函数或存储过程,务必添加注释。单行注释用 –,多行注释用 /* … */。

  • 语句结束符:每条独立的 SQL 语句都以分号 ; 结尾。

  • 大小写统一:除了关键字大写,表名和字段名建议统一使用小写,单词之间用下划线 _ 连接(例如 user_profile)。

💡

养成这些习惯,你的 SQL 代码将变得专业、清晰,让团队协作更加顺畅。