程序员培训-SQL编码规范_第1页
程序员培训-SQL编码规范_第2页
程序员培训-SQL编码规范_第3页
程序员培训-SQL编码规范_第4页
程序员培训-SQL编码规范_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.PAGE :.;MS SQL脚本编码规范福州星网视易信息系统更新记录:版本作者日期内容1.0黄晨东2021.09.09SQL脚本编写规范2.0蔡炆炆2021.10.15基于1.0版本进展补充和整理目录 TOC o 1-3 h z u HYPERLINK l _Toc275335586 Transact-SQL编程规范 PAGEREF _Toc275335586 h 1 HYPERLINK l _Toc275335587 一、概述 PAGEREF _Toc275335587 h 1 HYPERLINK l _Toc275335588 1.根本原那么 PAGEREF _Toc275335588

2、h 1 HYPERLINK l _Toc275335589 2.根本规范 PAGEREF _Toc275335589 h 1 HYPERLINK l _Toc275335590 二、对象命名 PAGEREF _Toc275335590 h 1 HYPERLINK l _Toc275335591 1.数据库 PAGEREF _Toc275335591 h 1 HYPERLINK l _Toc275335592 2.数据库文件 PAGEREF _Toc275335592 h 1 HYPERLINK l _Toc275335593 3.数据表 PAGEREF _Toc275335593 h 2 HY

3、PERLINK l _Toc275335594 4.数据视图 PAGEREF _Toc275335594 h 2 HYPERLINK l _Toc275335595 5.数据列 PAGEREF _Toc275335595 h 2 HYPERLINK l _Toc275335596 6.存储过程 PAGEREF _Toc275335596 h 2 HYPERLINK l _Toc275335597 7.函数 PAGEREF _Toc275335597 h 3 HYPERLINK l _Toc275335598 8.用户定义数据类型 PAGEREF _Toc275335598 h 3 HYPERL

4、INK l _Toc275335599 9.主键、索引 PAGEREF _Toc275335599 h 3 HYPERLINK l _Toc275335600 三、参数命名 PAGEREF _Toc275335600 h 3 HYPERLINK l _Toc275335601 1.数据列参数 PAGEREF _Toc275335601 h 3 HYPERLINK l _Toc275335602 2.非数据列参数 PAGEREF _Toc275335602 h 4 HYPERLINK l _Toc275335603 3.常用字段命名 PAGEREF _Toc275335603 h 4 HYPER

5、LINK l _Toc275335604 四、SQL编写 PAGEREF _Toc275335604 h 4 HYPERLINK l _Toc275335605 1.大小写 PAGEREF _Toc275335605 h 4 HYPERLINK l _Toc275335606 2.存储格式 PAGEREF _Toc275335606 h 4 HYPERLINK l _Toc275335607 3.类型选择 PAGEREF _Toc275335607 h 4 HYPERLINK l _Toc275335608 4.默许值 PAGEREF _Toc275335608 h 5 HYPERLINK l

6、 _Toc275335609 5.字段长度 PAGEREF _Toc275335609 h 5 HYPERLINK l _Toc275335610 6.运用“ PAGEREF _Toc275335610 h 5 HYPERLINK l _Toc275335611 7.语句缩进 PAGEREF _Toc275335611 h 5 HYPERLINK l _Toc275335612 8.语句换行 PAGEREF _Toc275335612 h 5 HYPERLINK l _Toc275335613 9.语句分割 PAGEREF _Toc275335613 h 5 HYPERLINK l _Toc2

7、75335614 10.运用“* PAGEREF _Toc275335614 h 5 HYPERLINK l _Toc275335615 11.表名别名 PAGEREF _Toc275335615 h 5 HYPERLINK l _Toc275335616 12.类型转换 PAGEREF _Toc275335616 h 5 HYPERLINK l _Toc275335617 13.数值比较 PAGEREF _Toc275335617 h 6 HYPERLINK l _Toc275335618 14.排序 PAGEREF _Toc275335618 h 6 HYPERLINK l _Toc275

8、335619 15.Unicode字符串 PAGEREF _Toc275335619 h 6 HYPERLINK l _Toc275335620 16.BEGIN.END 块 PAGEREF _Toc275335620 h 6 HYPERLINK l _Toc275335621 17.TOP子句 PAGEREF _Toc275335621 h 6 HYPERLINK l _Toc275335622 18.TRANSACTION编写 PAGEREF _Toc275335622 h 6 HYPERLINK l _Toc275335623 19.存储过程 PAGEREF _Toc275335623

9、h 7 HYPERLINK l _Toc275335624 五、代码注释 PAGEREF _Toc275335624 h 7 HYPERLINK l _Toc275335625 1.代码头部注释 PAGEREF _Toc275335625 h 7 HYPERLINK l _Toc275335626 2.TRANSACTION注释 PAGEREF _Toc275335626 h 7福州星网视易信息系统第 PAGE 7 页 Transact-SQL编程规范概述本规范主要规定SQL脚本在书写过程中所应遵照的规那么及本卷须知。编写该规范的目的是使公司软件开发人员的源代码书写习惯坚持一致。这样做可以使每

10、一个组员都可以了解其它组员的代码,以便于源代码的二次开发记忆系统的维护。根本原那么以大小写敏感编写SQL语句。尽量运用Unicode 数据类型。优先运用衔接替代子查询或嵌套查询。尽量运用参数化SQL查询替代语句拼接SQL查询。尽量运用存储过程替代SQL语句。制止运用拼音+英语的方式来命名SQL对象或变量。制止运用触发器。制止在表间创建外键关系。制止创建自增长主键列根本规范采用Pascal款式命名数据库对象。大写T-SQL言语的一切关键字,谓词和系统函数。Pascal 大小写:组成标识符的每个单词的首字母大写,其他字母小写的书写商定。对于缩写的双字母单词,要求全部大写。例如:Applicatio

11、nException ID对象命名数据库命名格式为工程英文称号。例如:AdventureWorks数据库文件数据文件:数据库称号 + _Data.mdf日志文件:数据库称号 + _Log.ldf例如:AdventureWorks_Data.mdf AdventureWorks_Log.ldf数据表命名格式为BL_TBL_+表名。例如:BL_TBL_Employee BL_TBL_Product表名以英文单数命名。例如:运用BL_TBL_Product 而不是BL_TBL_Products数据视图命名格式为BL_V_+ 视图称号。例如:BL_V_Employee BL_V_SalesPerson

12、数据列列称号命名采用英文单词或缩写,英文单词只于详细业务定义,尽量表达清楚含义。命名格式为列称号。例如:AddressID PostalCode尽量防止运用拼音命名,假设不可防止,对于比较短的列名,采用拼音全写,假设拼音列名比较复杂,可以采用首个字用全拼,其它字用首字母大写表示。例如:宁波 Ningbo 运营方式 JingYFS存储过程命名格式为BL_HV_ +存储过程称号。例如:BL_HV_GetUser BL_HV_AddUser每个过程必需求有两个输出参数ErrorCode和ErrorMessage。存储过程书写格式如下:if exists(select 1 from sysobject

13、s where id=object_id(bl_hv_Checkout)drop procedure bl_hv_Checkoutgocreate procedure Checkout( .ErrorCode int output, -前往错误代码 0表示胜利 非0 表示失败 ErrorMessage varchar(100) output -前往错误信息)asdeclare checkoutid int, -变量声明在此处 beginendgo函数命名格式为BL_Fn_ +函数名 。例如:BL_Fn_GetUser系统函数运用全部大写。例如:SELECT ISNULL(LastName,Un

14、known last name); GETDATE()用户定义数据类型命名格式为自定义数据类型称号。例如:Flag NameStyle主键、索引主键: PK_表称号_主键;假设是组合主键,运用PK_表名_主键1_主键2。例如:PK_ BL_TBL_Store_CustomerID PK_ BL_TBL_StoreContact_CustomerID_ContactID聚集索引:PK_表称号_主键;假设是组合主键,运用PK_表名_主键1_主键2。例如:PK_Store_CustomerID PK_StoreContact_CustomerID_ContactID独一非聚集索引:AK_表称号_列称

15、号。例如:AK_Store_rowguid不独一非聚集索引:PK_表称号_列称号。例如:IX_Store_SalesPersonID主 XML索引:PXML_表称号_Xml类型列称号。例如:PXML_Store_Demographics参数命名数据列参数命名格式为 + 列称号。例如:EmployeeID在列名不符合Pascal款式时早期遗留系统,例如运用全部大写的列称号,或运用“_进展衔接的字段称号,参数称号定义运用 + 列称号,这里的列称号尽量符合Pascal款式命名。非数据列参数在参数无法跟列称号进展关联时,运用可以反映该参数功能的英文单词或单词组合, 采用Pascal款式命名。例如:Er

16、rorID Flag常用字段命名这里的常用字段是指在建表时频繁运用的表名或列名,下表对常用字段进展建议性定义, 列称号数据类型阐明CreatedDatedatetime纪录创建日期,普通运用GETDATE()自动生成ModifiedDatedatetime纪录最后修正日期,初次运用GETDATE()DeletedDatedatetime记录删除标志删除日期StartDatedatetime开场日期EndDatedatetime终了日期StartTimedatetime开场时间EndTimedatetime终了时间IDint运用ID替代Id或idParentIDint父IDStatusint形状

17、SQL编写大小写大写T-SQL 言语的一切关键字,谓词和系统函数。变量称号及游标称号运用Pascal款式。数据类型定义运用全部小写。例如:DECLARE LastName nvarchar(32) ;存储格式尽量采用Unicode数据存储格式,提高可移植性和兼容性,实践运用中尽量运用nchar、nvarchar、ntext替代char、varchar、text。类型选择假设字符具有明确的长度,运用nchar替代nvarchar;char替代varchar。在只需两个能够数值时,运用bit替代int或smallint。在SQL Server 2005中,运用nvarchar(MAX)替代ntex

18、t;varchar(MAX)替代text;varbinary(MAX)替代image。在特殊的数据表构造中可思索xml数据类型,到达事半工倍的效果。默许值在建立数据表时,尽量运用默许值替代NULL值。比如设置CreatedDate列默许值为GETDATE()。在可行的情况下设置字段为不允许空。字段长度一直指定字符数据类型的长度,并确保允许用户能够需求的最大字符数,防止超出最大长度时出现字符丧失景象。对于字符型数据,建议采用2的n次方来定义数据长度。例如:nvarchar(32) varchar(64)运用“在 T-SQL 代码中为字符常量运用单引号,防止运用双引号。语句缩进一个嵌套代码块中的语

19、句运用2个空格的缩进。语句换行建议SQL代码每行以关键字或“开头。例如:SELECT ShiftID ,Name ,StartTime ,EndTime ,ModifiedDateFROM AdventureWorks.HumanResources.Shift语句分割运用一个而不是两个空行分隔 T-SQL 代码的逻辑块。运用“*尽量防止在任何代码中运用 “SELECT *。表名别名表名别名要简短,但意义要尽量明确。通常运用大写的表名作为别名,运用 AS 关键字指定表或字段的别名。类型转换不要依赖任何隐式的数据类型转换,不要假定 T-SQL 会进展必要的转换。例如,把数字变量赋予字符值。相反,在

20、为变量赋值或比较值之前,应运用适当的 CONVERT 函数使数据类型相匹配。数值比较不要将空的变量值直接与比较运算符符号比较。假设变量能够为空,应运用 IS NULL 或 IS NOT NULL 进展比较,或者运用 ISNULL 函数。排序决不要依赖 SELECT 语句会按任何特定顺序前往行,除非在 ORDER BY 子句中指定了顺序。通常,应将 ORDER BY 子句与 SELECT 语句一同运用。可预知的顺序即使不是最方便的比不可预知的顺序强,尤其是在开发或调试过程中。在前往行的顺序无关紧要的情况下,可以忽略 ORDER BY ,减少资源开销。Unicode字符串在Unicode字符前面运用N前缀,防止引起数据的不一致。例如:- Assumes the default code page is not GreekCREATE TABLE #t1 (c1 nchar(1)INSERT #t1 VALUES(N)INSERT #t1 VALUES()SELECT * FROM #t1输出结果:c1 OBEGIN.END 块在SQL代码快中尽量运用BEGIN.END 语句块,提高代码可阅读性。TOP子句尽量运用TOP(变量)来减少SQL拼串景象。TRANSACTION编写只需在例程中运用多个数据库修正语句,包括在一个循环中多次执行一个语句,就应思索声明显式事务。实例: BEGIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论