Skip to content

Latest commit

 

History

History
127 lines (89 loc) · 4.59 KB

附录 1 - SQL 语法规范.md

File metadata and controls

127 lines (89 loc) · 4.59 KB

SQL 语法规范

1. 命名规范

表名和字段名

  • 使用小写字母并采用下划线分隔单词,例如:user_profileorder_details
  • 表名和字段名应具有可读性并能明确表示含义,尽量避免使用缩写。
  • 不要在表名和字段名中使用空格或特殊字符。
  • 表名使用复数形式,字段名使用单数形式。
  • 尽量避免使用保留字(如 selectorder 等)。

别名

  • 别名尽量简短但具有辨识度,且在必要时使用,避免滥用。
  • 表和列的别名可以使用首字母简写或更简明的名称。
  • 为了增强可读性,使用 AS 关键字显式指定别名。

约束命名

  • 约束(如主键、外键、索引)命名应清晰并包含表名和约束类型。例如:
    • 主键:pk_user_profile
    • 外键:fk_order_user_id
    • 唯一约束:uk_email

2. SQL 语句格式化

关键字大小写

  • 使用大写书写 SQL 关键字,如 SELECTINSERTUPDATEDELETE 等。
  • 保持关键字大小写一致,便于阅读和维护。

缩进与对齐

  • SELECT 语句中,每个字段、表名、WHERE 条件分行书写,并使用统一缩进。
  • 多行 JOINWHEREGROUP BYORDER BY 等应按缩进分行排列。

括号的使用

  • 在复杂查询中,尽量使用括号明确操作顺序,确保语句逻辑清晰。
  • 左括号和内容同一行,右括号单独成行对齐。

3. SELECT 语句规范

字段选择

  • 避免使用 SELECT *,而应明确列出需要的字段,便于代码阅读和减少数据传输量。
  • 在查询中给表达式和计算字段添加别名,使查询结果更清晰。

WHERE 子句

  • 条件分行书写并使用逻辑操作符(如 ANDOR)连接,每行一个条件。
  • 将最可能筛选出数据的条件放在最前面,以提高查询效率。

ORDER BY 子句

  • 按需求排序,尽量明确指定字段名称,避免 ORDER BY 索引号。
  • 如果需要降序排列,使用 DESC,不写 ASC,保持语句简洁。

4. JOIN 语句规范

JOIN 类型

  • 优先选择内连接(INNER JOIN)和左连接(LEFT JOIN)等明确的连接类型,不用隐式连接。
  • 连接条件写在 ON 子句中,避免写在 WHERE 子句中。

多表 JOIN

  • 每个 JOIN 操作分行书写,便于清晰展示表与表之间的关系。
  • 尽量按逻辑顺序从主要表连接到次要表。

5. INSERT 语句规范

指定列名

  • INSERT 语句中,明确指定字段名,避免因表结构变化导致插入错误。
  • 使用列名与值的对应关系,便于维护代码和提高代码可读性。

批量插入

  • 批量插入时,确保数据格式和顺序保持一致,以免数据插入错误。

6. UPDATE 语句规范

WHERE 子句

  • 必须包含 WHERE 子句,以避免更新整张表。
  • 将条件分行书写,并清晰指定更新条件。

SET 子句

  • 将更新内容放在 SET 子句中并对齐,便于阅读和修改。

7. DELETE 语句规范

WHERE 子句

  • 必须包含 WHERE 子句,避免删除整张表的数据。
  • 确保条件严格,以准确删除需要的数据。

8. 使用注释

行内注释

  • 使用 -- 添加注释,适合单行注释。

块注释

  • 使用 /* ... */ 添加多行注释,适合描述复杂逻辑或操作流程。

注释内容

  • 注释应言简意赅,描述清楚复杂逻辑和目的,不写与代码内容重复的信息。

9. 索引与优化

索引命名

  • 索引命名应包含表名和索引字段名,如 idx_user_email

索引使用

  • 为常用查询条件、JOIN 字段建立索引,提高查询效率。
  • 避免在频繁更新的字段上建立索引。

查询优化

  • 使用 EXPLAIN 分析查询计划,优化查询性能。
  • 减少不必要的查询字段和冗余数据操作,确保查询简洁高效。

10. 事务处理

使用事务

  • 在批量操作(如多次 INSERTUPDATEDELETE)时,使用事务 BEGINCOMMIT 保证数据一致性。

错误处理

  • 使用 ROLLBACK 处理错误时回滚事务,确保数据的完整性和一致性。

11. 安全性规范

参数化查询

  • 使用参数化查询或预编译语句,避免 SQL 注入风险。

权限控制

  • 最小化数据库用户权限,仅授予必要的权限,避免高权限用户的滥用。
  • 不要使用 root 或管理员账户执行普通操作,降低风险。

敏感数据保护

  • 对敏感数据进行加密存储,如密码字段采用哈希算法存储,确保数据安全。