SQL Server数据库编程规范讨论稿

合集下载

SQL编写规范和优化

SQL编写规范和优化

SQL编写规范目录1共享SQL语句 (3)2减少访问数据库的次数 (3)3使用DECODE函数 (3)1减少ORACLE事务操作 (4)2减少对表的查询,特别是重复的查询: (4)3如何合理使用索引 (7)3.1要使用索引 (7)3.2分离表和索引 (7)3.3尽量建好和使用好索引 (7)3.4索引使用的注意事项 (9)3.4.1索引列值必须匹配 (9)3.4.2索引列不能加操作 (9)3.4.3索引列不能以通配符作词首 (9)3.4.4索引列不能使用空值 (9)3.4.5使用不等于操作(包括<>、!=和not =)不会使用索引 (10)3.4.6索引使用的顺序 (10)3.4.7强制索引失效 (11)3.4.8无法预知位置的索引列作关联查询,不会用到索引 (11)3.4.9使用HINTS(提示) (12)3.5删除无用的索引 (13)4使用BETWEEN而不是>=和<= (14)5使用COUNT会造成效率的降低。

(14)6使用DISTINCT会造成效率的降低 (15)7尽量不用EXIST,IN等耗时的关键字,最好使用多表关联查询。

(16)8尽量少使用基于大表生成的视图 (17)9减少网络访问次数 (17)10SQL中NOWAIT 的使用 (17)附件1:如何在VB程序中构造使用变量的查询语句(作者:李生龙) (18)附件2:建议:通过内部函数提高SQL效率 (18)附件3:HINT的使用 (19)1共享SQL语句ORACLE将已执行的SQL语句的分析放入共享池中,执行SQL语句前,ORACLE先将其与共享池中的SQL做比较,若完全匹配则直接取结果,不再进行分析,可大大提高效率。

但要注意:•ORACLE只对简单的表提供高速缓冲•ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)(当前设定的Cursor_Sharing的匹配模式为EXACT)•必须满足的三个条件当前被执行的语句和共享池中的语句必须完全相同两个语句所指的对象必须完全相同两个SQL语句中必须使用相同的名字的绑定变量因此在书写SQL语句的时候请注意:(1)对完成相同功能的SQL语句尽量使用COPY的方式,以使得SQL语句保持“一模一样”(2)在SQL中尽量使用相同的变量的方式,保持变量名字相同。

sql规范

sql规范

sql规范SQL(Structured Query Language)是一种用于管理关系数据库的计算机语言。

虽然SQL是一种标准的语言,但是在实际应用中,不同的数据库管理系统可能会有一些差异。

为了提高代码的可读性和可维护性,制定了一些SQL规范。

下面是一个涵盖了SQL规范的大致指南,旨在帮助开发人员编写高质量的SQL代码。

1. 格式化代码:- 使用统一的缩进,通常是4个空格。

- 在代码中适当空格,使代码更易读。

- 使用大写字母或小写字母编写关键词,以提高可读性。

2. 使用明确的表别名:- 在SQL查询中,如果涉及多个表,为每个表使用明确的别名。

- 别名应该具有描述性,以便更好地理解查询意图。

3. 使用JOIN语句:- 避免使用传统的WHERE语句来连接表,而是使用JOIN语句。

- JOIN语句可以更清晰、更有效地表示表之间的关系。

4. 避免使用SELECT *:- 在查询中,尽可能明确地列出需要的列,而不是使用通配符*。

- 这样可以减少数据传输量,提高查询效率,并且使查询意图更加明确。

5. 避免使用子查询:- 子查询会增加查询的复杂性和执行时间。

- 尽量使用JOIN语句来代替子查询,以提高查询性能。

6. 使用合适的数据类型:- 在创建表时,选择适当的数据类型和长度。

- 这样可以减少存储空间的使用,并提高查询性能。

7. 对于NULL值的处理:- 在查询中,使用IS NULL或IS NOT NULL来测试NULL 值,而不是使用等号(=)。

- 这样可以更明确地表示查询的意图,并且使代码更易读。

8. 使用事务:- 当执行多个SQL操作时,将它们放在一个事务中。

- 这样可以确保数据的一致性,并提供可靠的回滚机制。

9. 编写注释:- 在代码中加入注释,解释SQL的意图和目的。

- 这样可以让其他开发人员更容易理解代码,并且在维护代码时更加方便。

10. 安全性考虑:- 在查询中,避免将用户输入直接插入SQL查询中,以免遭受SQL注入攻击。

SQL_Server开发通用规范

SQL_Server开发通用规范

文件版次:东软集团股份有限公司1.1目的规范sql的编写格式,提高SQL语句的可读性,共享性和执行效率。

1.2使用范围所有需要与数据库交互的应用系统。

1.3概述大部分业务系统需要与数据库进行交互,与数据库交互的主要方式就是SQL 语句,编写规范的SQL语句不但利于阅读,而且被数据库重复使用的几率也较大,执行效率相对较高,编写的好的SQL与编写的差的SQL在执行性能上可能会差几倍甚至几千几万倍,因此养成好的SQL编写规范对于提高项目质量及提高开发人员自身素质有着潜在的极大的影响。

1.4书写SQL书写遵守如下规范:◆在同一个项目中,为了最大限度实现SQL的共享,要求书写sql语句时大小写要一致,为了阅读方便和统一起见,所有SQL语句全部小写(如SQL谓词,字段名,表名等),常量除外,常量可以按需要书写。

举例:下面两个相同的语句除常量外都要统一起来。

1)select name from emp;2)select ‘NAME’from emp where emp_no=’QD001’◆SQL语句尽可能放在一行,若SQL太长放在一行中影响阅读时可分多行,但要保持缩进一致,缩进可用TAB或者空格,但TAB数和空格数最好一致。

◆SQL语句中,各谓词之间以空格分割的,尽量保持空格数量一致,即若用一个空格分割,则全部都用一个空格分割,便于数据库能够共享。

◆能使用绑定变量的,尽量使用绑定变量,尤其是在前台程序中.◆对下面列出的情况,慎重使用绑定变量:1)列值倾斜严重,如:某一状态列大部分值是‘1’,只有极少数值为’2’,这种情况不宜用绑定变量,而应该用常量,便于数据库使用柱状图统计信息。

2)日期时间列。

总之:书写SQL的目标是若sql的用途是一样的,则sql应该完全一致,包括空格,大小写。

下面的语句由于写法不完全相同,数据库会理解为4条不同的语句从而导致重复编译,降低了性能。

1)select name from emp where emp_no=’111’2)Select name From emp Where emp_no=’111’3)select Name from EMP where emp_no=’111’4)select name from emp where EMP_NO=’111’下面的语句,由于语句规范,可以只编译一次。

SQL数据库设计,编码开发规范(转)

SQL数据库设计,编码开发规范(转)

SQL数据库设计,编码开发规范(转)SQL Server Database Design, Code and DevelopmentStandards1.更改Change Name Date命名原则:表意性原则(增加) DavidDong Jan/05数据库命名DavidDong Jan/05表命名DavidDong Jan/05Server/Instance命名DavidDong Jan/05JOB,复制命名DavidDong Jan/052.简介数据库设计是指对于⼀个给定的应⽤环境,构造最优的数据库模式,建⽴数据库及其应⽤系统,有效存储数据,满⾜⽤户信息要求和处理要求数据库设计和开发标准是使Newegg Support Center的数据库系统的设计和开发正式化的标准。

通过此标准,来规范数据库设计。

通过⼀致的系统解决⽅案,能给我们的系统带来以下优点:¨开发出⾼可管理性的⾼质量系统¨能够快速的进⾏开发¨减少维护代码的时间Ø ⾮常容易的把代码从⼀个项⽬拷贝⾄另⼀个项⽬Ø 节省把游标,错误处理信息从⼀个项⽬中拷贝到另⼀个项⽬中的时间Ø 使程序逻辑简单化Ø 不⽤花费时间在常规的事情上,⽐如对象名称转换等,并可允许多次设计,编程和对复杂事件的测试⼯作¨在代码出错时⼤⼤节省时间¨只要在第⼀次是有个良好的设计3.开发环境3.1数据库模型CA公司的ERwin/SQL是数据建模的⼀个⾸选⼯具.在开发经常改变的项⽬时,使⽤ERwin来⽣成表(创建/删除),索引,规则,数据类型等数据库对象的脚本,在对项⽬⽂件进⾏修改之前,请确认已经对这些脚本进⾏过备份.任何数据库的改变,不管是在开发中还是在产品服务器中,都要⽤ERwinDiagram中进⾏相应的修改.如果产品服务器上做出了更改,则⼀定要对主脚本和ERwin diagram进⾏相应更新.3.2 Diagrams使⽤Visio进⾏数据diagram,流程图,服务器拓朴和其它diagrams进⾏设计.⽂档化系统或者处理流程可以⼤⼤有利于团队间的协作.3.3版本控制推荐使⽤Visual SourceSafe(VSS)对NESE数据库对象进⾏管理.在任何项⽬中,都应该有很好的代码更改控制,初始版本⽂件应该放到VSS中并被注释.所有对这些⽂件的后继更改都应该放到VSS中管理.3.4 源码⽬录结构在项⽬刚开始时,找到⼀个所有Team成员都能够访问的共享.按照以下结构初始化VSS⽬录和数据库⼦⽬录:\CMD 包括全系统脚本的脚本⽂件,如果是⼀个多数据库的系统,应该有⼀个可能创建所有数据库的命令⽂件.\DBName 在系统中的每个数据库应该有⾃⼰的⽬录结构,如下:\CMD:⽤来创建此数据库的脚本⽂件,并且来更改数据库构架.\DAT:⽤来刷新此数据库的数据⽂件.\SP:⽤来存储存储过程的脚本\TBL:除了下⾯⼦⽬录,这个⽬录应该包括表的定义脚本,每个表应该有它⾃⼰的脚本,此脚本应该包括经表的删除,创建语句,索引,触发器,完整性参照,Check约束,默认值约束等,每个表创建语句应该包括在不同的脚本中,并被把归类到类似于下⾯的相应的⼦⽬录中.注意:本⽬录中的脚本和以下⼦⽬录的脚本应该命名为它所影响的表名,⽐如:表名.sql:\Check:为每个表创建独⽴的Check约束定义脚本,Check约束应该使⽤alter table add constraint 来创建,并且每个altertable 语句只能包括⼀个contraint。

SQLServer数据库设计命名规范

SQLServer数据库设计命名规范

SQLServer数据库设计命名规范SQLServer数据库设计规范1 相关的设计规范1.1 采⽤有意义的字段名尽可能地把字段描述的清楚些。

当然,也别做过头了,⽐如CustomerShippingAddressStreetLine1 虽然很富有说明性,但没⼈愿意键⼊这么长的名字,具体尺度就在你的把握中。

每个单词的⾸个字母要求⽤⼤写不要⽤下划线来连接每个单词。

1.2 遵守3NF 标准3NF 规定:A.表内的每⼀个值都只能被表达⼀次。

B.表内的每⼀⾏都应该被唯⼀的标识(有唯⼀键)。

C.表内不应该存储依赖于其他键的⾮键信息。

1.3 ⼩⼼保留词要保证你的字段名没有保留词、数据库系统或者常⽤访问⽅法冲突,⽐如,写的⼀个ODBC 连接程序⾥有个表,其中就⽤了DESC 作为说明字段名。

后果可想⽽知!DESC 是DESCENDING 缩写后的保留词。

表⾥的⼀个SELECT *语句倒是能⽤,但我得到的却是⼀⼤堆毫⽆⽤处的信息。

1.4 保持字段名和类型的⼀致性在命名字段并为其指定数据类型的时候⼀定要保证⼀致性。

假如字段在某个表中叫做“AgreeMentNumber”,你就别在另⼀个表⾥把名字改成“ref1”。

假如数据类型在⼀个表⾥是整数,那在另⼀个表⾥可就别变成字符型了。

记住,你⼲完⾃⼰的活了,其他⼈还要⽤你的数据库呢。

2 命名规则:2.1 数据库(Database)的定义数据库名称 = 数据库内容标识(⾸字⼤写)2.2 表(Table)的定义命名应尽量反映存储的数据内容。

表名前缀:以该表及与该表相关联的⼀系列表的内容⽽得到⼀个代表统⼀的标识表名称 = 表名前缀 + 表内容标识(⾸字⼤写)如ClientInfo相关联的⼀系的表以ci作为前缀,即有表名:ciHistory,ciContact,ciBusiness2.3 字段(Field)的定义字段是数据库中的⽤途最⼴泛的,它的类型⾮常多,所以必须加类型前缀来标⽰它的类型。

020103_SQL编程规范.doc

020103_SQL编程规范.doc

NC SQL编程规范一、概述本手册侧重于代码编写过程中SQL语句的编写规范问题,内容涉及书写风格、性能优化、多数据适配等方面。

文档中用★标示的内容为必须遵守的条例,其余的可视为建议。

二、书写风格1.SQL语句全部使用小写。

★2.引用字符时用单引号。

如:update testable set idcol=’abcd’。

★3.连接符或运算符or、in、and、=、<=、>=,+,- 等前后加上一个空格。

4.严禁使用select * …….形式的语句,必须指出select的具体字段,即select col1,col2,… from tablea where ….★5.严禁使用insert into table values(?,?,?),必须指出具体要赋值的字段,即insert intotablea (col1, col2,…) values(?,?,…)★6.SQL语句包含多表连接时,建议对每个表命名别名,对每个字段的使用都要带上表别名,即select a.col1, a.col2, b.col3 from tablea a, tableb b where a.col4=b.col57.避免隐含的类型转换。

例如在where子句中numeric 型和int型的列的比较或相加。

★8.读取是指通过JDBC读到的数据格式,保存是指保存在VO中的数据格式,插入或者更新是指insert或者update语句中的数据格式。

a)整型字段:读取时根据字段设置保存为Integer或者Long。

b)数字型字段:读取为BigDecimal,并保存为UFDouble,插入或者更新时为BigDecimal。

c)字符型字段:读取为String,并保存为String,插入或者更新为String。

d)布尔型字段:读取为String(‘Y’ OR ‘N’),并保存为UFBoolean,插入或者更新时为String(‘Y’ OR ‘N’)。

SQLServer数据库设计命名规范

SQLServer数据库设计规范1 相关的设计规范1.1 采用有意义的字段名尽可能地把字段描述的清楚些。

当然,也别做过头了,比如CustomerShippingAddressStreetLine1 虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。

每个单词的首个字母要求用大写!!!不要用下划线来连接每个单词。

1.2 遵守3NF 标准3NF 规定:A.表内的每一个值都只能被表达一次。

B.表内的每一行都应该被唯一的标识(有唯一键)。

C.表内不应该存储依赖于其他键的非键信息。

1.3 小心保留词要保证你的字段名没有保留词、数据库系统或者常用访问方法冲突,比如,写的一个ODBC 连接程序里有个表,其中就用了DESC 作为说明字段名。

后果可想而知!DESC 是DESCENDING 缩写后的保留词。

表里的一个SELECT *语句倒是能用,但我得到的却是一大堆毫无用处的信息。

1.4 保持字段名和类型的一致性在命名字段并为其指定数据类型的时候一定要保证一致性。

假如字段在某个表中叫做“AgreeMentNumber”,你就别在另一个表里把名字改成“ref1”。

假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。

记住,你干完自己的活了,其他人还要用你的数据库呢。

2 命名规则:2.1 数据库(Database)的定义数据库名称= 数据库内容标识(首字大写)2.2 表(Table)的定义命名应尽量反映存储的数据内容。

表名前缀:以该表及与该表相关联的一系列表的内容而得到一个代表统一的标识表名称= 表名前缀+ 表内容标识(首字大写)如ClientInfo相关联的一系的表以ci作为前缀,即有表名:ciHistory,ciContact,ciBusiness2.3 字段(Field)的定义字段是数据库中的用途最广泛的,它的类型非常多,所以必须加类型前缀来标示它的类型。

字段名称= 字段类型前缀+ 字段内容标识(首字大写)2.4 视图名视图的名称= "vw" + 视图内容标识(首字大写)如vUserPerm2.5 触发器名触发类型触发标识-----------------------------------Insert iDelete dUpdate u触发名= "tr" + 触发标识+ 相应的表名如:triClient,trdClient。

数据库应用SQL编写规范

数据库应用SQL编写规范展开全文1. 编程规范本章讲述ORACLE数据库SQL脚本编码规范。

1.1. 总述1.1.1. 编码规范1)编写脚本时,Oracle保留字大写,其他一律使用小写,除非必要(如:作字符串时或注释语句中);2)脚本必须规范,SQL编写不能采用缩略写法:如INSERT INTO中的INTO不能省略;INTO后面要列出字段名;3)语句内的空格,统一为一个空格;4)表定义中,字段名、字段类型(长度)、缺省、(非)空、字段注释都必须左对齐;5)使用空格键对齐,不要使用Tab键;6)运算符前后,各保留一个空格;7)所有对象命名必须是有意义的,且不能使用保留字;8) 后台存储过程SQL文件中不允许出现字符’&’,注释中也不允许;1.1.2. 关于注释为保证SQL语句的可读性和推广性,需增加相关注释说明。

包、存储过程、函数的注释中应包含以下内容:1)编写人、编写日期、编写目的与主要内容;2)修改人、修改日期、修改目的与主要内容;3)如果有特殊处理、特别的技巧等内容,一定要在注释中详细说明;4)注释应单独成行,并放在语句前面;5)应对不易理解的分支条件表达式加注释;6)对重要的计算应说明其功能;7)过长的函数实现,应将其语句按实现的功能分段加以概括性说明;8)对常量及变量注释时,应注释被保存值的含义,包括合法取值的范围;9)应采用多行注释方式(/* */ );10) 注释尽量采用英文,防止数据库字符集问题;11)源程序有效注释量必须在30%左右,注释不宜太多也不能太少。

1.2. 对象命名规则Oracle数据库对象一般按照以下原则命名,可适当简化,名字长度不能超过30。

1.2.1. 表数据库表的命名规则:1)表名一般用T_开头,表示为TABLE;2)系统表,加上SYS_,如:T_SYS_;基础表,加上INFO_,如:T_INFO_;日志表,加上LOG_,如:T_LOG_;配置表,加上CFG_,如:T_CFG_;备份表,加上BAK_前缀和时间后缀,如: BAK_T_OTHER_20130507;临时表,加上TMP_前缀和时间后缀,如:TMP_T_OTHER_20130507;3)多个单词间以下划线(_)进行连接,表示功能;如:T_LOG_ONLINE_PAYMENT,表示:在线交易日志表,这样很直观;4)入内存的表用C_开头,保证开发人员能够将正确的表初始化到应用程序的CACHE;如:C_INFO_MOBILE_H,这表示:该号段表是放在CACHE使用的。

sql server中utf-8对应的规则

sql server中utf-8对应的规则在讨论SQL Server中UTF-8编码的相关规则和实践时,我们需要深入理解UTF-8编码的概念、在SQL Server中的支持情况、如何使用UTF-8编码来存储数据,以及这种编码方式的优势和注意事项。

本文将围绕这些核心内容进行讲解,并力求提供一个全面而深入的视角。

UTF-8编码概述UTF-8是一种变长的编码方案,用于Unicode字符集。

它可以使用1到4个字节表示一个字符,根据字符的不同而变化。

这种编码方式的设计旨在兼容ASCII编码,即在UTF-8编码中,ASCII字符的编码与其在ASCII编码中完全相同,均为一个字节。

SQL Server中的UTF-8支持自SQL Server 2019开始,微软引入了对UTF-8编码的支持。

这意味着可以将字符列(如`CHAR`、`VARCHAR`)和字符变量声明为使用UTF-8编码。

这一特性的引入,为存储和处理全球化数据提供了更高效的方式,特别是当数据主要为ASCII字符时,使用UTF-8编码可以节省存储空间。

使用UTF-8编码在SQL Server中使用UTF-8编码存储数据,需要在创建表或列时指定`COLLATION`属性为支持UTF-8的排序规则。

例如,创建一个使用UTF-8编码的表列:```sqlCREATE TABLE SampleTable(SampleColumn VARCHAR(100) COLLATELatin1_General_100_CI_AS_SC_UTF8)```在这个例子中,`COLLATE`关键字后面跟着的是支持UTF-8的排序规则名称。

`Latin1_General_100_CI_AS_SC_UTF8`表示使用拉丁基础字符集,区分大小写、支持区别重音的排序和比较,且支持UTF-8编码。

UTF-8编码的优势1. 节省存储空间:对于大量使用ASCII字符的数据,UTF-8编码可以显著减少所需的存储空间。

对SqlServer数据库性能调整及优化的探讨

47第1卷 第19期产业科技创新 2019,1(19):47~48Industrial Technology Innovation 对SqlServer数据库性能调整及优化的探讨袁 超(泰安市气象局,山东 济南 271000)摘要:数据库是一种应用广泛的现代化信息技术类型,而随着应用的不断深入,数据库性能面对的挑战也越来越高。

就目前来看,在系统开发中很少会考虑到性能方面的问题,这会导致后期应用的过程中一些潜在的数据库性能问题不断爆发。

本文将从数据库性能优化的目的以及内容入手,探讨基于SQL Server平台的数据库性能优化方法。

关键词:SQL Server;数据库;性能优化;迭代优化中图分类号:TP311.13 文献标识码:A 文章编号:2096-6164(2019)19-0047-02随着现代数据库应用业务的不断发展和扩展,用户对数据库性能的要求也在持续提高。

一般情况下,面临性能问题的数据库多为大型数据库,需要存储海量的数据。

而目前主流的数据库主要有微软的SQL Server、Oracle、IBM的DB2等几种,因此针对数据库调整优化的研究也应该从这几种数据库入手。

其中微软的SQL Server对性能的研究更为深入。

1 数据库性能优化概述1.1 数据库性能优化的目标根据数据库的用途,其性能优化的目标主要集中在以下几个方面,1)缩短响应时间。

响应时间指的是用户发出事务处理指令到后台系统处理指令并将第一条结果反馈给用户这一过程所所消耗的时间,它又两部分构成,分别是CPU处理时间和用户等待时间。

因此想要达到优化目标,也可以从两个方面入手,即缩短系统服务时间或是用户等待时间。

2)提高系统吞吐量。

系统吞吐量指的是其单位时间内系统处理用户请求的数量,结合以往的经验,提高系统吞吐量的常规方法有两种,其一是缩短服务时间,这样就可以在资源环境相同的情况下做更多工作。

其二是缩短总体响应时间,提高工作速度。

3)减少磁盘读I/O读写次数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLServer数据库编程规范《讨论稿》

1总则1.1目的为了规范单位平台开发过程中SQL语句的编写工作,提高SQL语句共享,避免语义或语句相同的SQL语句重复解析,优化SQL查询,培养开发人员良好的代码风格,参照工作中的体会和常用代码规范,编写此规范。

1.2基本原则以大小写敏感编写SQL语句。尽量使用Unicode数据类型。优先使用连接代替子查询或嵌套查询。尽量使用参数化SQL查询代替语句拼接SQL查询。禁止使用[拼音]+[英语]的方式来命名SQL对象或变量。尽量使用存储过程代替SQL语句。

1.3基本规范采用Pascal样式或Camel样式命名数据库对象。大写T-SQL语言的所有关键字,谓词和系统函数。2命名规范在一般情况下,采用Pascal样式或Camel样式命名数据库对象,使在开发基于数据库应用程序的时候通过ORM工具生成的数据访问代码不需要调整就符合程序开发语言(比如C#)命名规范。另外,关系型数据库同Xml结合得越来越紧密,规范的命名越来越重要。

2.1对象命名2.1.1数据库采用Pascal样式命名,命名格式为[项目英文名称]。示例:ReportServer、AdventureWorks

2.1.2数据库文件数据文件:[数据库名称]+.mdf日志文件:[数据库名称]+_Log.ldf示例:ReportServer.mdf、AdventureWorks.mdfReportServer_Log.ldf、AdventureWorks_Log.ldf

2.1.3关系型数据仓库采用Pascal样式命名,命名格式为[项目英文名称]+DW。示例:ReportServerDW、AdventureWorksDW2.1.4数据架构除SQLServer系统定义的数据架构外,新建架构采用Pascal样式命名,命名格式为[架构名]。示例:HumanResources、Production、Person、Sales对数据库对象Table,View,Procedure,Function等使用数据架构进行归类。在SQLServer2000/5/8中dbo为默认架构。

2.1.5数据表采用Pascal样式命名,命名格式为[表名]。示例:Address、Product、ProductModel表名以英文单数命名,主要是参考SQLServer2008示例数据库AdventureWorks。示例:使用Product,而不是Products

2.1.6数据视图视图名称采用Pascal样式命名,命名格式为v+[视图名称]。示例:vProduct、vSalesPerson2.1.7数据列列名称命名采用英文单词或缩写,英文单词只来自于具体业务定义,尽量表达清楚含义。采用Pascal样式命名,命名格式为[列名称]。示例:AddressID、PostalCode

2.1.8存储过程建议采用Pascal样式命名,命名格式为up_[存储过程名称]。示例:up_GetUser、up_AddUser备注:在SQLServer2008示例数据库中使用Camel样式命名。

2.1.9函数自定义函数采用Pascal样式命名,命名格式为fn_[函数名],系统函数使用全部大写。示例:ufn_GetUser()、ufn_AddUser()示例:SELECTISNULL(@LastName,’Unknownlastname’);GETDATE()

2.1.10用户定义数据类型采用Pascal样式命名,命名格式为[自定义数据类型名称]。示例:FlagNameStyle2.1.11DML触发器DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。DML事件包括对表或视图发出的UPDATE、INSERT或DELETE语句。根据事件不同命名规则使用前缀进行区分,格式为[u|i|d]+[表名|视图名]示例:uProduct、iProduct、dProduct

另外一种方式为,AFTER触发器:TR_表名_[后面插入加I,修改加U,删除加D]。INSTEADOF触发器:TR_表名或视图名_OF[后面插入加I,修改加U,删除加D]

2.1.12DDL触发器响应各种数据定义语言(DDL)事件而激发。这些事件主要与以关键字CREATE、ALTER和DROP开头的Transact-SQL语句对应。执行DDL式操作的系统存储过程也可以激发DDL触发器。采用Camel样式命名,命名单词能够描述DDL触发器功能。示例:CREATETRIGGERsafetyONDATABASEFORDROP_TABLE,ALTER_TABLEASPRINT’’ROLLBACK;另外一种方式为添加ddl前缀,示例:CREATETRIGGER[ddlDatabaseTriggerLog]ONDATABASEFORDDL_DATABASE_LEVEL_EVENTSAS

2.1.13主键、外键关系和索引主键:PK_[表名称]_[主键];如果是组合主键,使用PK_[表名]_[主键1]_[主键2]。示例:PK_Store_CustomerIDPK_StoreContact_CustomerID_ContactID外键关系:FK_[从表名称]_[主表名称]_[外键列名称]。示例:FK_StoreContact_Store_CustomerID聚集索引:PK_[表名称]_[主键];如果是组合主键,使用PK_[表名]_[主键1]_[主键2]。示例:PK_Store_CustomerIDPK_StoreContact_CustomerID_ContactID唯一非聚集索引:AK_[表名称]_[列名称]。示例:AK_Store_rowguid不唯一非聚集索引:IK_[表名称]_[列名称]。示例:IX_Store_SalesPersonID主XML索引:PXML_[表名称]_[Xml类型列名称]。示例:PXML_Store_Demographics

2.2参数命名2.2.1数据列参数命名格式为+[列名称]。示例:@PersonID

2.2.2非数据列参数在参数无法跟列名称进行关联时,使用能够反映该参数功能的英文单词、单词组合或者汉语词组,采用Pascal样式命名。示例:@ErrorID、@错误号3举例说明3.1大小写大写T-SQL语言的所有关键字,谓词和系统函数。变量名称及游标名称使用Pascal样式。数据类型定义使用全部小写。示例:DECLARE@LastNamenvarchar(32);

3.2使用分号“;”使用“;”作为Transact-SQL语句终止符。虽然分号不是必需的,但使用它是一种好的习惯。示例:USEAdventureWorks;GODECLARE@findvarchar(30);SET@find=’Man%’;SELECTLastName,FirstName,PhoneFROMPerson.ContactWHERELastNameLIKE@find;3.3存储格式尽量采用Unicode数据存储格式,提高可移植性和兼容性,实际应用中尽量使用nchar、nvarchar、ntext代替char、varchar、text。

3.4类型选择如果字符具有明确的长度,使用nchar代替nvarchar;char代替varchar。在只有两个可能数值时,使用bit代替int或smallint。在SQLServer2008中,使用nvarchar(MAX)代替ntext;varchar(MAX)代替text;varbinary(MAX)代替image。在特殊的数据表结构中可考虑xml数据类型,达到事半工倍的效果。

3.5默认值在建立数据表时,尽量使用默认值代替NULL值。比如设置CreatedDate列默认值为GETDATE()。在可行的情况下设置字段为不允许空。

3.6字段长度始终指定字符数据类型的长度,并确保允许用户可能需要的最大字符数,避免超出最大长度时出现字符丢失现象。对于字符型数据,建议采用2的n次方来定义数据长度。示例:nvarchar(32)、varchar(64)3.7使用单引号“’”在T-SQL代码中为字符常量使用单引号,避免使用双引号。3.8语句缩进一个嵌套代码块中的语句使用四个空格的缩进。使用MicrosoftSQLServerManagementStudio,选择“工具”菜单,打开“选项”菜单,在选项对话框中选择文本编辑器->纯文本->制表符,选中“插入空格”单选框,设置“制表符大小”为4,缩进大小为“4”。

3.9语句换行建议SQL代码每行以关键字或“’”开头。示例:SELECT[ShiftID],[Name],[StartTime],[EndTime],[ModifiedDate]FROM[AdventureWorks].[HumanResources].[Shift]

3.10语句分割使用一个(而不是两个)空行分隔T-SQL代码的逻辑块。

相关文档
最新文档