一套优秀的 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 代码将变得专业、清晰,让团队协作更加顺畅。