SQL代码编写指导规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL代码编写指导规范
项目:规范
文号:COD-STA-03
版本:V1.1
编写者:许飞云
时间:2005-11-4
SQL代码编写指导规范
时间版本作者/修改人变更原因
2005-11-4 V1.0 许飞云初版发布
2007-3-5 V1.1 刘莉添加5.4 约定规则
目录
1 简介 (2)
1.1 目标 (2)
1.2 范围 (2)
1.3 基本依据 (2)
1.4 使用约定 (2)
1.4.1 规则 (2)
1.4.2 建议 (2)
1.5 术语和缩略语 (2)
1.6 参考 (3)
2 通用规则 (3)
3 配置约定 (3)
4 格式约定 (3)
5 命名约定 (4)
5.1 一般规则 (4)
5.2 命名规则 (4)
5.3 常用规则 (5)
5.4 约定规则 (6)
5.4.1 表名采用前缀+表名的方式,前缀定义如下: (6)
6 注释 (7)
6.1 SQL代码注释 (7)
6.2 对象注释 (7)
7 嵌入式代码 (8)
1 简介
开发小组在进行SQL 编程时常常会忽略所谓的编码标准,但这些标准却是开发小组顺利开展工作的关键工具。这里介绍的编码标准是经整理出来的开发成果。它们当然还没有得到普遍接受,而且不可否认,有些标准带有主观色彩。整理出此规范实际上更多的是为了提高大家的意识,而不是吹捧每个人是SQL 编写方面的仲裁者:最重要的是要建立某些合理的编码标准并遵循这些标准。您在这篇文章中会发现有关SQL 编程的一系列不同的编码标准、技巧和提示。它们并未以任何特定的优先级或重要性顺序列出。
1.1 目标
本主题提供SQL编程语言的命名指南。希望能对下述情况有积极的作用:
➢避免Errors/Bugs ,特别是难以查询的Errors/Bugs
➢规范不良的编码习惯
➢提高程序的可读性、可维护性和可移值性
1.2 范围
规范只针对SQL Server数据库中的SQL编程语言。
1.3 基本依据
本文档主要依据一位具有超过25 年经验的数据库管理员和应用程序开发员Brian Walker 提出的开发成果。
同时也可参考MSDN文档中相应的规范。
1.4 使用约定
1.4.1 规则
本文档表明没有特别的理由必须要遵守的要求。违反规则的编码人员必须至少同有经验的同事商量并取得违反规则的理由共识后才能实施。必须对违反规则的代码进行注解。
1.4.2 建议
正常情况下优先考虑,如果有违反建议的编码,应该同有经验的同事商量并取得违反建议的理由共识后才能实施,推荐对违反建议的代码进行注解。
1.5 术语和缩略语
如下表所示:
术语全称含义部份命令备注SQL Structrued Query Language 结构化查询语言如下
DDL Data Definition Language 数据定义语言CREATE, ALTER, DROP, DECLARE
DM L Data Manipulation Language 数据操纵语言SELECT, DELETE,
UPDA TE, INSERT
DCL Data Control Language 数据控制语言GRANT, REVOKE, COMMIT, ROLLBACK
1.6 参考
MSDN-命名指南
Sql Server 2000 联机帮助
2 通用规则
规则1: 每一次不能执行建议的编码规则,必须要有合理的理由,理由不包括个人的编码风格因素。
规则2: 在一个文件中不要混合不同所有者的代码,因为第三方的代码可能不会遵守相同的编码规范。
3 配置约定
为方便开发小组成员编写出高质量的SQL代码,需要开发小组各成员按照统一的标准配置适合快速、高效开发的使用环境。这里,将会列出一些较
序号项目推荐方案备注
1 SQL代码编辑工具查询分析器SQL Server 自带
2 缩进符使用4个空格字符需要配置编辑器
➢可以使用Tab键进行缩进处理,建议在配置选项中,将默认的制表符,更改为四个空格字符,这样不管用什么程序查看SQL代码,都能保证是一致的格式
4 格式约定
表面上,SQL 代码的格式似乎并不重要,但一致的格式可以使您的同事(不论是同一小组的成员还是更大范围的项目开发团队的成员)更轻松地浏览和理解您的SQL代码。为SQL 语句定义一个结构,遵循一目了然的结构将使您可以更轻松地查找和确认语句的不同部分。统一的格式还使您可以更轻松地在复杂的SQL 语句中增、删代码段,也使调试工作变得更容易。
下面是SELECT 语句的格式示例,来说明SQL代码中的部份适用的格式:
SELECT
, Last
, First
, E.Number
, ISNULL(I.Description,'NA') AS Description
FROM tblCompany AS C
JOIN tblEmployee AS E
ON panyID = panyID
LEFT JOIN tblCoverage AS V
ON E.EmployeeID = V.EmployeeID
LEFT JOIN tblInsurance AS I
ON V.InsuranceID = I.InsuranceID
WHERE LIKE @Name
AND V.CreateDate > CONVERT(smalldatetime,'01/01/2000')
ORDER BY
, Last
, First
, E.Number
, ISNULL(I.Description,'NA')
SELECT @Retain = @@ERROR, @Rows = @@ROWCOUNT
IF @Status = 0 SET @Status = @Retain
➢在代码块中使用缩进、块、制表符(用四个空格代替的)和空格
➢一个嵌套代码块中的语句一般使用以四个空格的缩进为较好的原则
➢在同一语句中开始新行时,使SQL 关键字左对齐
➢使用一个(而不是两个)空行分隔SQL 代码的逻辑块,只要需要就可以使用
➢请在关键字、分隔符、操作符之间加入一空格
➢语句尽可能要简捷
➢当对语句添加注释时,请在注释符与注释之前,额外加上一空格
5 命名约定
5.1 一般规则
规则1: 使用US-English 作为命名标识符依据。
规则2: 使用命名标识符的Pascal 大小写、Camel 大小写。
5.2命名规则
由于不同的开发语言都有各自的格式约定,因此,对于SQL代码而言,在命名方面制定一些大家都比较熟悉或是习惯使用的标准是很有必要的。
序号项目关键字命名规则前缀示例备注
1 表TABLE Pascal无CompanyInfo
2 存储过程PROCEDURE Camel sp spDeleteUser Stored Procedure
3 函数FUNCTION Camel fn fnGetVersion Function
4 触发器TRIGGER Camel 无updEmployeeData 一般不带上trigger对应的缩写
5 视图VIEW Camel v vUserCompany 通常使用表名