程序员培训-SQL编码规范.doc

上传人:帮**** 文档编号:860489 上传时间:2019-08-08 格式:DOC 页数:9 大小:96.64KB
返回 下载 相关 举报
程序员培训-SQL编码规范.doc_第1页
第1页 / 共9页
程序员培训-SQL编码规范.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《程序员培训-SQL编码规范.doc》由会员分享,可在线阅读,更多相关《程序员培训-SQL编码规范.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 http:/福州星网视易信息系统有限公司 MS SQL 脚本编码规范脚本编码规范福州星网视易信息系统有限公司福州星网视易信息系统有限公司http:/福州星网视易信息系统有限公司 目录目录Transact-SQL 编程规范.1 一、概述.1 1.基本原则 .1 2.基本规范 .1 二、对象命名.1 1.数据库.1 2.数据库文件 .1 3.数据表.2 4.数据视图.2 5.数据列.2 6.存储过程.2 7.函数.3 8.用户定义数据类型 .3 9.主键、索引 .3 三、参数命名.3 1.数据列参数 .3 2.非数据列参数 .4 3.常用字段命名 .4 四、SQL 编写.4 1.大小写.4 2.

2、存储格式.4 3.类型选择.4 4.默认值.5 5.字段长度.5 6.使用“”.5 7.语句缩进 .5 8.语句换行 .5 9.语句分割 .5 10.使用“*”.5 11.表名别名 .5 12.类型转换 .5 13.数值比较 .6 14.排序.6 15.Unicode 字符串.6 16.BEGIN.END 块.6 17.TOP 子句.6 18.TRANSACTION 编写.6 19.存储过程 .7 五、代码注释.7 1.代码头部注释 .7 2.TRANSACTION 注释.7http:/福州星网视易信息系统有限公司第 1 页 Transact-SQL 编程规范编程规范一、一、概述概述本规范主要

3、规定 SQL 脚本在书写过程中所应遵循的规则及注意事项。编写该规范的目的是 使公司软件开发人员的源代码书写习惯保持一致。这样做可以使每一个组员都可以理解其 它组员的代码,以便于源代码的二次开发记忆系统的维护。1. 基本原则基本原则以大小写敏感编写 SQL 语句。 尽量使用 Unicode 数据类型。 优先使用连接代替子查询或嵌套查询。 尽量使用参数化 SQL 查询代替语句拼接 SQL 查询。 尽量使用存储过程代替 SQL 语句。 禁止使用拼音+英语的方式来命名 SQL 对象或变量。 禁止使用触发器。 禁止在表间创建外键关系。 禁止创建自增长主键列2. 基本规范基本规范采用 Pascal 样式命

4、名数据库对象。大写 T-SQL 语言的所有关键字,谓词和系统函数。 Pascal 大小写大小写: 组成标识符的每个单词的首字母大写,其余字母小写的书写约定。对于缩写的双字母单词, 要求全部大写。 例如:ApplicationExceptionID二、二、对象命名对象命名1.数据库数据库命名格式为项目英文名称。 示例:AdventureWorks2.数据库文件数据库文件数据文件:数据库名称 + _Data.mdf 日志文件:数据库名称 + _Log.ldf 示例:AdventureWorks_Data.mdfAdventureWorks_Log.ldfhttp:/福州星网视易信息系统有限公司第

5、2 页 3.数据表数据表命名格式为BL_TBL_+表名。 示例:BL_TBL_Employee BL_TBL_Product表名以英文单数命名。 示例:使用BL_TBL_Product 而不是BL_TBL_Products4.数据视图数据视图命名格式为 BL_V_+ 视图名称。 示例:BL_V_EmployeeBL_V_SalesPerson5.数据列数据列列名称命名采用英文单词或缩写,英文单词只来自于具体业务定义,尽量表达清楚含义。 命名格式为列名称。 示例:AddressIDPostalCode尽量避免使用拼音命名,如果不可避免,对于比较短的列名,采用拼音全写,如果拼音列 名比较复杂,可以

6、采用首个字用全拼,其它字用首字母大写表示。 示例:宁波 Ningbo经营方式 JingYFS6.存储过程存储过程命名格式为 BL_HV_ +存储过程名称。 示例:BL_HV_GetUserBL_HV_AddUser 每个过程必须要有两个输出参数ErrorCode 和ErrorMessage。 存储过程书写格式如下:if exists(select 1 from sysobjects where id=object_id(bl_hv_Checkout) drop procedure bl_hv_Checkout go create procedure Checkout (. ErrorCode

7、int output, -返回错误代码 0 表示成功 非 0 表示失败 ErrorMessage varchar(100) output -返回错误信息) as declarecheckoutid int, -变量声明在此处 begin http:/福州星网视易信息系统有限公司第 3 页 end go7.函数函数命名格式为 BL_Fn_ +函数名 。 示例:BL_Fn_GetUser 系统函数使用全部大写。 示例:SELECT ISNULL(LastName,Unknown last name); GETDATE()8.用户定义数据类型用户定义数据类型命名格式为自定义数据类型名称。 示例:Fl

8、agNameStyle9.主键、主键、索引索引主键: PK_表名称_主键;如果是组合主键,使用 PK_表名_主键 1_主键 2。 示例:PK_ BL_TBL_Store_CustomerIDPK_ BL_TBL_StoreContact_CustomerID_ContactID聚集索引:PK_表名称_主键;如果是组合主键,使用 PK_表名_主键 1_主键 2。 示例:PK_Store_CustomerID PK_StoreContact_CustomerID_ContactID唯一非聚集索引:AK_表名称_列名称。 示例:AK_Store_rowguid 不唯一非聚集索引:PK_表名称_列名称

9、。 示例:IX_Store_SalesPersonID 主 XML 索引:PXML_表名称_Xml 类型列名称。 示例:PXML_Store_Demographics三、三、参数命名参数命名1. 数据列参数数据列参数命名格式为 + 列名称。 示例:EmployeeID 在列名不符合 Pascal 样式时(早期遗留系统) ,例如使用全部大写的列名称,或使用“_” 进行连接的字段名称,参数名称定义使用 + 列名称,这里的列名称尽量符合 Pascal 样 式命名。http:/福州星网视易信息系统有限公司第 4 页 2.非数据列参数非数据列参数在参数无法跟列名称进行关联时,使用能够反映该参数功能的英文

10、单词或单词组合, 采用 Pascal 样式命名。 示例:ErrorIDFlag3.常用字段命名常用字段命名这里的常用字段是指在建表时频繁使用的表名或列名,下表对常用字段进行建议性定义, 列名称数据类型说明CreatedDatedatetime纪录创建日期,一般使用GETDATE()自动生成ModifiedDatedatetime 纪录最后修改日期,首次使用 GETDATE()DeletedDatedatetime记录删除(标记删除)日期StartDatedatetime开始日期EndDate datetime结束日期StartTimedatetime开始时间EndTimedatetime结束时

11、间ID int 使用 ID 代替 Id 或 idParentIDint父 IDStatusint状态四、四、SQL 编写编写1.大小写大小写大写 T-SQL 语言的所有关键字,谓词和系统函数。变量名称及游标名称使用 Pascal 样式。 数据类型定义使用全部小写。 示例:DECLARE LastName nvarchar(32) ;2.存储格式存储格式尽量采用 Unicode 数据存储格式,提高可移植性和兼容性,实际应用中尽量使用 nchar、nvarchar、ntext 代替 char、varchar、text。3.类型选择类型选择如果字符具有明确的长度,使用 nchar 代替 nvarch

12、ar;char 代替 varchar。 在只有两个可能数值时,使用 bit 代替 int 或 smallint。 在 SQL Server 2005 中,使用 nvarchar(MAX)代替 ntext;varchar(MAX)代替 text;varbinary(MAX)代替 image。 在特殊的数据表结构中可考虑 xml 数据类型,达到事半工倍的效果。http:/福州星网视易信息系统有限公司第 5 页 4.默认值默认值在建立数据表时,尽量使用默认值代替 NULL 值。比如设置 CreatedDate 列默认值为 GETDATE()。在可行的情况下设置字段为不允许空。5.字段长度字段长度始终

13、指定字符数据类型的长度,并确保允许用户可能需要的最大字符数,避免超出最大长 度时出现字符丢失现象。对于字符型数据,建议采用 2 的 n 次方来定义数据长度。 示例:nvarchar(32)varchar(64)6.使用使用“”在 T-SQL 代码中为字符常量使用单引号,避免使用双引号。7.语句缩进语句缩进一个嵌套代码块中的语句使用 2 个空格的缩进。8. 语句换行语句换行建议 SQL 代码每行以关键字或“”开头。 示例: SELECT ShiftID,Name,StartTime,EndTime,ModifiedDate FROM AdventureWorks.HumanResources.S

14、hift9. 语句分割语句分割使用一个(而不是两个)空行分隔 T-SQL 代码的逻辑块。10.使用使用“*”尽量避免在任何代码中使用 “SELECT *” 。11.表名别名表名别名表名别名要简短,但意义要尽量明确。通常使用大写的表名作为别名,使用 AS 关键字指 定表或字段的别名。12.类型转换类型转换不要依赖任何隐式的数据类型转换,不要假定 T-SQL 会进行必要的转换。例如,把数字变 量赋予字符值。相反,在为变量赋值或比较值之前,应使用适当的 CONVERT 函数使数据 类型相匹配。http:/福州星网视易信息系统有限公司第 6 页 13.数值比较数值比较不要将空的变量值直接与比较运算符(

15、符号)比较。如果变量可能为空,应使用 IS NULL 或 IS NOT NULL 进行比较,或者使用 ISNULL 函数。14.排序排序决不要依赖 SELECT 语句会按任何特定顺序返回行,除非在 ORDER BY 子句中指定了顺序。 通常,应将 ORDER BY 子句与 SELECT 语句一起使用。可预知的顺序(即使不是最方便的) 比不可预知的顺序强,尤其是在开发或调试过程中。在返回行的顺序无关紧要的情况下, 可以忽略 ORDER BY ,减少资源开销。15.Unicode 字符串字符串在 Unicode 字符前面使用 N 前缀,避免引起数据的不一致。 示例: - Assumes the d

16、efault code page is not Greek CREATE TABLE #t1 (c1 nchar(1)INSERT #t1 VALUES(N) INSERT #t1 VALUES() SELECT * FROM #t1输出结果: c1 - O16.BEGIN.END 块块在 SQL 代码快中尽量使用 BEGIN.END 语句块,提高代码可阅读性。17.TOP 子句子句尽量使用 TOP(变量)来减少 SQL 拼串现象。18.TRANSACTION 编写编写只要在例程中使用多个数据库修改语句,包括在一个循环中多次执行一个语句,就应考虑 声明显式事务。 实例:BEGIN TRANSA

17、CTION Tran_1;UPDATE HumanResources.Employee SET Title = Title ,HireDate = HireDate ,CurrentFlag = CurrentFlag WHERE EmployeeID = EmployeeID;IF ERROR 0BEGINROLLBACK TRANSACTION Tran_1;ENDCOMMIT TRANSACTION Tran_1;http:/福州星网视易信息系统有限公司第 7 页 19.存储过程存储过程在编写存储过程时,使用 PROCEDURE 代替 PROC 简写。 示例:CREATE PROCEDU

18、RE dbo.存储过程名字五、五、代码注释代码注释1.代码头部注释代码头部注释在 SQL 代码块(sql 文件或存储过程)的头部进行注释,标注创建人(Author)、创始日期 (Create date)、修改信息(Modify n)。 格式: - = - Author: - Create date: - Description: - Modify n: - =示例: - = - Author: Zhanghaifeng - Create date: 2006-12-25- Description: H2000 报关单回执处理 - Modify 1: 郑佐, 2006-12-31, 简化逻辑判断流程 - Modify 2: 郑佐, 2007-01-20, 更新条件判断 - =注:日期格式使用 yyyy-MM-dd。Modify n n 代表修改序号,从 1 开始,每次修改加 1。2.TRANSACTION 注释注释建议在每个事务的开头进行注释,说明该事务的功能。 - BEGIN TRANSACTION Tran_1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com