3.1.BEGIN END语句块

BEGIN END能够定义SQL
Server语句块,使这个话语作为一组语句实行,允许语句嵌套。举个例子请见示例4

附录A  命名法规

常见命名准绳有两种体裁:完全大写、完全小写、帕斯Carl大小写和 Camel 大小写。

2.8.运算符的先行级

优先级 运算符
1 ~(位反)
2 *(乘),/(除),%(取模)
3 +(正),-(负),+(加),+(连接),-(减),&(位与)
4 =,>,<,>=,<=,<>,!=,!>,!<(比较运算符)
5 ^(位异或),位或(符号打不出来,前面有,自己翻)
6 NOT
7 AND
8 ALL,ANY,BETWEEN,IN,LIKE,ALL,SOME
9 =(赋值)

当表达式中的运算符有相同的事先级时,依据它们在表明式中的地方,一元运算符按从右往左运算,二元运算符(对七个表达式功效的运算符)按从左往右运算。
示例9:验证运算符优先级
试行下列语句

DECLARE @result INT,@num INT
SET @num=45
SET @result=@num+(~@num)*4-@num/(~@num)
SELECT @result AS result
GO

结果如图所示
4503.com 1
计算代码中的表明式
@result=@num+(~@num)4-@num/(~@num)
=@num+(-46)
4-@num/(-46)
=45+(-46)4-45/(-46)
=45+(-46)
4
=-139

3.7.使用“’”

在 T-SQL
代码中为字符常量使用单引号,制止使用双引号。

3.8.T途达Y CATCH错误管理语句

设若T凯雷德Y块内部爆发错误,会将调控传递给CATCH块内的语句组。TTucsonY
CATCH构造捕捉全体严重等级大于10但不会停下数据库连接的荒谬。
示例15:TRY CATCH的示例
推行下列语句

BEGIN TRY
SELECT * FROM Student
SELECT 120/0 FROM Student
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS '错误信息'
END CATCH

试行结果如图所示
4503.com 2
语句中3个select语句全体都举行了。假使把报错的select语句放到寻常的select语句前边,平常的select语句还是能够无法实行呢?施行下列语句

BEGIN TRY
SELECT 120/0 FROM Student
SELECT * FROM Student
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS '错误信息'
END CATCH

结果如图所示
4503.com 3
日常select语句相当小概实施。TEscortY
CATCH语句的逻辑是,一旦TPAJEROY语句块中出现难题讲话,立即跳转到CATCH语句块,T奥迪Q5Y语句块接下去的言语不再实行。

1.3.12.     DDL触发器

一呼百应各样数码定义语言
(DDL) 事件而振奋。这几个事件非同常常与以注重字 CREATE、ALTEEnclave 和 DROP 初始的
Transact-SQL 语句对应。实施 DDL 式操作的系统存款和储蓄进程也足以激起 DDL
触发器。

动用Camel样式命名,命名单词能够描述DDL触发器功用。

示例:

CREATE TRIGGER safety

ON DATABASE

FOR DROP_TABLE, ALTER_TABLE

AS

   PRINT ‘You must
disable Trigger “safety” to drop or alter tables!’

   ROLLBACK ;

除此以外一种艺术为增多ddl前缀,

示例:

CREATE TRIGGER [ddlDatabaseTriggerLog]

ON DATABASE

FOR DDL_DATABASE_LEVEL_EVENTS

AS

3.2.IF ELSE语句块

用于指定T-SQL语句的实行基准,若条件为真,则实践基准表明式前面包车型大巴言语,条件为假时,能够试用ELSE关键字钦赐要实行的T-SQL语句。比如请见示例4

1.3.1. 数据库

首先种方法,采纳帕斯Carl样式命名,命名格式为[项目塞尔维亚语名称]。

示例:AdventureWorks

其次种办法,选拔帕斯Carl样式命名,命名格式为[品类日文名称]

  • Db。

示例:AdventureWorksDb

 
BizTalkRuleEngineDb

提出利用第一种办法。

3.3.CASE分支语句

示例10:将Student表的上学的儿童,性别和籍贯打字与印刷出来,供给籍贯只可以呈现本省,外省或自治区。
Student表的数目如图所示
4503.com 4
实施下列语句

SELECT stu_name AS 姓名,stu_sex AS 性别,
(CASE stu_native_place
WHEN '浙江' THEN '省内'
WHEN '内蒙古' THEN '自治区'
WHEN '西藏' THEN '自治区'
WHEN '宁夏' THEN '自治区'
WHEN '新疆' THEN '自治区'
WHEN '广西' THEN '自治区'
ELSE '省外'
END) AS 籍贯 
FROM Student

结果如图所示
4503.com 5

1.1.骨干尺度

以大小写敏感编写SQL语句。

尽量采纳Unicode
数据类型。

预先使用连接代替子查询或嵌套查询。

尽量利用参数化SQL查询替代语句拼接SQL查询。

取缔采纳[拼音]+[英语]的措施来命名SQL对象或变量。

尽或然使用存款和储蓄进程替代SQL语句。

1.4.Transact-SQL语言功底

4503.com,3.6.字段长度

一直钦点字符数据类型的长度,并保管允许顾客大概要求的最大字符数,幸免过量最大尺寸时现身字符遗失现象。对于字符型数据,建议选取2的n次方来定义数据长度。

示例:nvarchar(32)

  varchar(64)

3.7.GOTO跳转语句

该语句使T-SQL批管理的实行跳转至钦定标签。由于该语句破坏结构化语句的组织,尽量少用
示例13:将GOTO作为分支机制
实施上面语句

DECLARE @Counter int;  
SET @Counter = 1;  
WHILE @Counter < 10  
BEGIN   
    SELECT @Counter  
    SET @Counter = @Counter + 1  
    IF @Counter = 4 GOTO Branch_One --Jumps to the first branch.  
    IF @Counter = 5 GOTO Branch_Two  --This will never execute.  
END  
Branch_One:  
    SELECT 'Jumping To Branch One.'  
    GOTO Branch_Three; --This will prevent Branch_Two from executing.  
Branch_Two:  
    SELECT 'Jumping To Branch Two.'  
Branch_Three:  
SELECT 'Jumping To Branch Three.';

结果如图所示
4503.com 6
当Counter=4时,实践GOTO语句输出Branch
One,施行完这一个讲话之后就打破了WHILE循环,接着实施Branch_One语句中的GOTO,输出Branch
Three,结束。

注:在WHILE循环中动用GOTO会打破循环。

示例14:用GOTO语句完毕示例11中打字与印刷菱形的功能
实施下列语句

DECLARE @width int,@j int,@i int
SET @width=9--@width为菱形的最大宽度
SET @j=1--@j表示每行打印的“*”符号的个数
SET @i=1--@i表示下一行打印第i行
Set3:PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)--SPACE函数打印n个空字符,REPLICATE打印n个特定字符串
SET @i=@i+1
IF @i<=(@width+1)/2
GOTO Set1
ELSE
GOTO Set2
Set1:
SET @j=@j+2
GOTO Set3
Set2:
SET @j=@j-2
IF @j>=1
GOTO Set3

结果如图所示
4503.com 7

3.11.   使用“*”

尽量制止在任何代码中使用
“SELECT *”。

1.4.1.2.局地变量

有的变量能够具备一定数据类型,有自然的功能域,一般用来充当计数器总结或调节循环实行次数,大概用于保存数据值。局地变量前唯有1个@符,用DECLARE语句证明局地变量。

USE test
DECLARE @StudentId varchar(20)
SET @StudentId=(
SELECT Student.stu_no
FROM Student
WHERE stu_enter_score='603')
SELECT @StudentId AS 入学分数为603的学生学号
GO

结果如图所示
4503.com 8

1.3.5. 数据表

行使帕斯Carl样式命名,命名格式为[表名]。

示例:Employee

      Product

表名以土耳其(Turkey)语单数命名,首若是参照SQL
Server
二〇〇五示范数据库,个人知道不应用复数是为了越来越好的采纳ORM工具生成符合编制程序标准的代码(例如C#)。

示例:使用Product

 而不是Products

1.用到Transact-SQL语言编制程序

即使SQL Server
二〇〇九提供了图形化分界面,但独有一种Transact-SQL语言能够直接与数据库引擎进行互动。遵照实行效率特色能够将Transact-SQL语言分成3大类:数据定义语言DDL,数据垄断(monopoly)语言DML,数据调节语言DCL。

3.16.   Unicode字符串

在Unicode字符后面使用N前缀,防止引起数据的分歧。

示例:


Assumes the default code page is not Greek

CREATE TABLE #t1 (c1 nchar(1))

INSERT #t1 VALUES(N’Ω’)

INSERT #t1 VALUES(‘Ω’)

SELECT * FROM
#t1

出口结果:

c1  


Ω

O

1.1.数额定义语言DDL

是最基础的Transact-SQL语言类型,用来创建数据库和创设,修改,删除数据库中的各样对象,为别的语言的操作提供对象。举个例子数据库,表,触发器,存款和储蓄进程,视图,函数,索引,类型及客商等都以数据库中的对象。常见的DDL语句蕴含

CREATE TABLE--创建表
DROP TABLE--删除表
ALTER TABLE--修改表

注:日期格式使用
yyyy-MM-dd。Modify [n] n代表修改序号,从1始发,每一趟修改加1。

1.2.数额垄断语言DML

是用以操纵表和视图中的数据的言辞,比方查询数据(SELECT),插入数据(INSERT),更新数据(UPDATE)和删除数据(DELETE)等。

3.14.   数值相比较

无须将空的变量值直接与比较运算符(符号)相比较。若是变量或然为空,应选择IS NULL 或 IS NOT NULL 进行比较,恐怕选拔 ISNULL 函数。

  • 1.行使Transact-SQL语言编制程序
    • 1.1.数据定义语言DDL
    • 1.2.数目操纵语言DML
    • 1.3.数额调节语言DCL
    • 1.4.Transact-SQL言语功底
  • 2.运算符
    • 2.1.算数运算符
    • 2.2.赋值运算符
    • 2.3.位运算符
    • 2.4.比较运算符
    • 2.5.逻辑运算符
    • 2.6.连接运算符
    • 2.7.一元运算符
    • 2.8.运算符的早期级
  • 3.垄断(monopoly)语句
    • 3.1.BEGIN
      END语句块
    • 3.2.IF
      ELSE语句块
    • 3.3.CASE分支语句
    • 3.4.WHILE语句
    • 3.5.WAITFOENVISION延缓语句
    • 3.6.RETUCR-VN无条件退出语句
    • 3.7.GOTO跳转语句
    • 3.8.TCRUISERY
      CATCH错误管理语句
  • 4.常用函数
    • 4.1.数据类型调换函数

代码注释

2.运算符

3.15.   排序

并不是要依赖 SELECT
语句会按任何特定顺序再次回到行,除非在 O酷路泽DEENVISION BY 子句中钦点了各样。常常,应将
O兰德瑞虎DELAND BY 子句与 SELECT
语句一同行使。可预见的依次(即便不是最平价的)比不足预见的次第强,特别是在付出或调节和测量试验进程中。在再次来到行的顺序非亲非故重要的意况下,能够忽略
O中华VDE奥迪Q7 BY ,收缩财富开垦。

3.6.RETUEscortN无条件退出语句

该语句表示无条件结束查询,批处理或存款和储蓄进程的推行。存款和储蓄进程和批管理RETUENVISIONN语句前边的话语都不再推行。当在存款和储蓄进程中动用该语句时,能够钦命重临给调用应用程序、批管理或进度的整数值。假诺RETUCR-VN未钦定再次来到值,则存款和储蓄进度的重返值是0

1.4.参数命名

3.5.WAITFO哈弗推迟语句

WAITFOVanquish延迟语句可以让在它今后的说话在一个点名的每一日恐怕时间距离后实践,能够悬挂起批管理,存款和储蓄进度或专门的职业的实践。
示例12:在某些时刻点查询Student表学号为20180101的学习者音信

BEGIN
WAITFOR TIME '15:03'--在15点03分查询
SELECT * FROM Student
WHERE stu_no='20180101'
END

示例13:在3分钟后查询Student表学号为20180102的学习者讯息

BEGIN
WAITFOR DELAY '00:03'--在3分钟后查询
SELECT * FROM Student
WHERE stu_no='20180102'
END

4503.com 9

4.1.代码头部注释

在SQL代码块(sql文件或存款和储蓄进程)的头顶实行注解,标记成立人(Author)、创始日期(Create date)、修改新闻(Modify [n])。

格式:

2.7.一元运算符

一元运算符只对多个表明式实施操作,该表明式能够是数字数据类型中的任何一种数据类型。SQL
Server 二〇〇九提供的一元运算符包括正(+),负(-),位反(~)。
示例8:声喜宝(Hipp)(Beingmate)个int数据类型变量@num并赋值,对该变量做正负位反操作。
实行下列语句

DECLARE @num INT
SET @num=45
SELECT +@num AS 正,-@num AS 负,~@num AS 位反
GO

结果如图所示
4503.com 10

注:位反操作符用于取三个数的补数,只可以用来整数。

1.5.常见命名

1.3.数量调控语言DCL

提到到权力管理的语言称为数据调整语言,主要用以执行有关安全治本的操作。如授予权限(GRANT),收回权限(REVOKE),拒绝授予主体权限,并防范主体通过组或角色成员持续权限(DENY

4.2.TRANSACTION注释

提出在每一个专业的伊始举行表明,表明该事务的成效。

— <
Modifier,Date, Description >

BEGIN TRANSACTION;

2.3.位运算符

位运算符富含与运算(&),或运算(|)和异或运算(^),能够对多少个表达式进行位操作,这三个表明式能够是整型数据或二进制数据。Transact-SQL首先把整型数据转变为二进制数据,然后按位运算。举个轻易的例证。
示例3:注脚2个int型变量@num1,@num2,对那四个赋值且做与或异或运算。
实施上边包车型客车口舌

DECLARE @num1 int,@num2 int
SET @num1=5 
SET @num2=6
SELECT @num1&@num2 AS 与,
@num1|@num2 AS 或,
@num1^@num2 AS 异或

结果如图所示
4503.com 11
扩大示例4:写二个十进制调换为二进制的函数

CREATE FUNCTION Bin_con_dec(@dec int)--定义十进制转换为二进制函数
RETURNS varchar(20)
AS
BEGIN
DECLARE @quo int,@remainder varchar(20),@quo1 int
SET @quo=@dec
SET @remainder=''
WHILE @quo<>0
BEGIN
SET @quo1=@quo/2
SET @remainder=CAST(@quo%2 AS varchar(20))+@remainder
SET @quo=@quo1
END
RETURN @remainder
END

举行上边的函数后,运营下列语句验证函数正确性

PRINT dbo.Bin_con_dec(42)

结果为101010,函数定义正确。

5.1.Pascal 大小写

重组标记符的各类单词的首字母大写,别的字母小写的书写约定。对于缩写的双字母单词,须求全数大写。

例如:ApplicationException

      ID

3.垄断语句

1.3.对象命名

4.常用函数

1.3.9. 函数

自定义函数选择Pascal样式命名,命名格式为[函数名],系统函数使用任何大写。

示例:SELECT ISNULL(@LastName,’Unknown last
name’);

GETDATE()

2.2.赋值运算符

即等号(=),将表明式的值赋予另贰个变量。举一个简短的例子。
示例2:计算Student表中学生的平均入学成绩并打印。
Student表的数额如图所示,stu_enter_score列寄存了学生的入学成绩
4503.com 12
进行下边包车型客车言语

DECLARE @average int--声明@average变量
SET @average=(--将计算出的平均值赋值给@average
SELECT AVG(stu_enter_score)
FROM Student)
PRINT @average--打印@average的值

结果如图所示
4503.com 13

3.12.   表名小名

表名小名要简单,但意义要硬着头皮明显。常常采用大写的表名作为别称,使用
AS 关键字钦点表或字段的别称。

1.4.1.1.种类全局变量

系统全局变量分为两大类,一类是与自然SQL
Server连接或与眼下管理有关的全局变量,如@@Rowcount代表近年来三个话语影响的行数。@@error代表保留方今进行操作的错误状态。一类是与整个SQL
Server系统有关的全局变量,如@@Version代表如今SQL Server的版本音讯。

SELECT @@VERSION AS 当前版本;--查看当前SQL Server的版本信息

结果如图所示
4503.com 14

1.3.11.     DML触发器

DML触发器是当数据库服务器中产生多少操作语言
(DML) 事件时要进行的操作。DML 事件包罗对表或视图发出的 UPDATE、INSERT 或
DELETE 语句。依据事件区别命名准则使用前缀举办区分,格式为 [u|i|d] +
[表名|视图名]

示例:uEmployee

  iEmployee

      dEmployee

除此以外一种方法为,

AFTER 触发器:TR_表名_[末端插入加I,修改加U,删除加D]。

INSTEAD OF 触发器:TR_表名或视图名_OF[末端插入加I,修改加U,删除加D]

1.4.1.常量与变量

常量十分的少说。在SQL Server
二零零六中,存在二种变量。一种是系统定义和掩护的全局变量,一种是客商定义用来保存中间结果的有的变量。

1.2.骨干标准

提出采用帕斯Carl样式或Camel样式命名数据库对象。

大写T-SQL语言的装有重大字,谓词和种类函数。

目录

5.2.Camel 大小写

标记符的首字母小写,各个前面连接的单词的首字母大写,其他字母小写的书写约定。对于缩写的双字母单词,须求它们出现在标记符首部时整个大写,不然一切大写。

例如:applicationException

      id

3.4.WHILE语句

用来安装双重推行T-SQL语句或语句块的口径。
示例11:用“*”在显示屏上输出八个小幅为9的菱形。
实践下列语句

DECLARE @width int,@j int
SET @width=9--@width为菱形的最大宽度
SET @j=1--@j表示每行打印的“*”符号的个数
WHILE @j<=@width
BEGIN
PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)--SPACE函数打印n个空字符,REPLICATE打印n个特定字符串
SET @j=@j+2
END
SET @j=@width-2
WHILE @j>0
BEGIN
PRINT SPACE((@width-@j)/2)+REPLICATE('*',@j)
SET @j=@j-2
END

结果如图所示
4503.com 15

取名规范

在形似景观下,采纳帕斯Carl样式或Camel样式命名数据库对象,使在支付基于数据库应用程序的时候经过ORM工具生成的数额访谈代码无需调动就符合程序支付语言(譬如C#)命名标准。别的,关系型数据库同Xml结合得愈加严密,标准的命名更加的重要。

在事实上数据库开荒进程中,假若须要方已经提供数据库应用方案,提出以提供的方案为准;在原来数据库上开展晋级换代开采时,在使得的景况下可方便做出统一筹算调解以合乎编制程序标准。

2.4.相比运算符

也称关系运算符,用于比相当多个值的涉嫌,常见的有等于(=),大于(>),小于(<),大于等于(>=),小于等于(<=),不对等(<>或!=)
示例5:从Student表中询问入学成绩在平均分以上的上学的小孩子消息
Student表的数量如图所示
4503.com 16
实行下列语句

DECLARE @ave int
SET @ave=(SELECT AVG(stu_enter_score) FROM Student)
SELECT *FROM Student
WHERE stu_enter_score>=@ave;

结果如下图所示
4503.com 17

注:不可能一向把代码写成上面的花样

SELECT * FROM Student
WHERE stu_enter_score>=AVG(stu_enter_score)

消息147,级别15,状态1,第2 行
聚拢不应出现在WHERE 子句中,除非该聚合位于HAVING
子句或选拔列表所富含的子查询中,而且要对其进展联谊的列是表面援引。

因为AVG是聚合函数。

附录B  参照他事他说加以考察能源

2.1.算数运算符

在SQL Server
二〇〇九中,算数运算包蕴加(+)减(-)乘(*)除(/)取模(%)。举三个归纳的例子。
示例1:在Student表中增加一列,列名称为stu_age,根据Student表的stu_birthday列计算stu_age列并插入数据。(演示插入整列数据的主意)
Student表数据如图所示
4503.com 18
实行上边包车型客车言语

ALTER TABLE Student
ADD stu_age int;--在Student表中添加stu_age列
CREATE TABLE #agetemp(stu_no varchar(8),age int);--新建一个临时表
INSERT INTO #agetemp(stu_no,age)--在临时表中插入学号和计算出来的年龄
SELECT Student.stu_no,YEAR(GETDATE())-YEAR(stu_birthday)--利用函数和运算符计算年龄
FROM Student;
UPDATE Student
SET Student.stu_age=#agetemp.age--将临时表中的age列数据整个复制到Student表的stu_age列
FROM #agetemp
WHERE Student.stu_no=#agetemp.stu_no--条件是两个表的stu_no列值相等
GO
SELECT * FROM Student

结果如图所示
4503.com 19

3.8.语句缩进

三个嵌套代码块中的语句使用多个空格的缩进。使用Microsoft
SQL Server Management Studio
,选拔“工具”菜单,张开“选项”菜单,在挑选对话框中精选文本编辑器->纯文本->制表符,选中“插入空格单选框”,设置“制表符大小”为4,缩进大小为“4”。

2.6.连接运算符

加号(+)是字符串连接运算符,能够用它把字符串串连起来,在示例4的十进制转二进制函数中,就用上了加号。
示例7:将Student表的stu_name列和stu_enter_score列放在同等列显示,列名叫score
Student表的多少如图所示
4503.com 20
实践下列语句

SELECT stu_name+CAST(stu_enter_score AS VARCHAR(3)) AS score FROM Student

进行结果如图所示
4503.com 21

注:stu_enter_score列数据类型为int,加号只对字符串类型数占领效,因此要用CAST函数将stu_enter_score的数据类型调换为varchar(3),那样能力促成字符串拼接。

SQL编写

2.5.逻辑运算符

逻辑运算符的功用是对准绳进行测量检验。ALL,AND,ANY,BETWEEN,EXISTS,IN,LIKE,NOT,ALL,SOME。下边用SOME来比喻。SOME的职能是假若在一组相比较中,有个别为true那就为true。
示例6:查询Student表中是不是留存入学战绩当先平均分的上学的小孩子,假设存在,输出true,不设有输出false。
Student表的stu_enter_score列(入学战表)数据如图所示
4503.com 22
试行上面包车型客车言语

USE test
IF (SELECT AVG(stu_enter_score) FROM Student)<=SOME(SELECT stu_enter_score FROM Student)
PRINT 'true'
ELSE
PRINT 'false'
GO

结果如图所示
4503.com 23

3.19.   TOP子句

在SQL Server
贰零零陆中抓实了TOP的施用,尽量利用TOP(变量)来压缩SQL拼串现象。

4.1.数据类型调换函数

私下认可景况下SQL
Server会对一部分数据类型举办自动转变,这种转移称为隐式调换。蒙受不能活动调换,则需求用CAST()函数和CONVERT()函数调换,这种转移称为显式调换。CAST()函数和CONVERT()函数的效能是均等的,CAST函数更便于选取,CONVERT函数的独到之处是能够钦定日期和数值格式。
示例16:将Student表中的学号调换为日期格式
下边两句语句的效率是同等的,实践下列语句

SELECT stu_name,CAST(stu_no AS DATE) AS 学号转换成日期,stu_enter_score,stu_birthday FROM Student
SELECT stu_name,CONVERT(DATE,stu_no) AS 学号转换成日期,stu_enter_score,stu_birthday FROM Student

结果如图所示
4503.com 24
示例17:用CONVERT()函数将stu_birthday转化成钦点格式的日期
实践下列语句

SELECT stu_name,CONVERT(VARCHAR(20),stu_birthday,101) FROM Student
--CONVERT函数将DATE类型的stu_birthday字段转化为字符串,并限定了样式,代码101

结果如图所示
4503.com 25

注:在上述代码中,CONVERT(DATE,stu_birthday,101)这么写是没用的。101格式码只对日期格式转化为字符串有效,别的格式转化为日期格式是不行的。

别的常用函数太轻松了此地不写了,略。

3.9.语句换行

建议SQL代码每行以主要字或“’”开始。

示例:

SELECT [ShiftID]

      ,[Name]

      ,[StartTime]

      ,[EndTime]

      ,[ModifiedDate]

  FROM [AdventureWorks].[HumanResources].[Shift]

1.3.13.     主键、外键关系和目录

主键:
PK_[表名称]_[主键];假诺是组成主键,使用PK_[表名]_[主键1]_[主键2]。

示例:PK_Store_CustomerID

 
PK_StoreContact_CustomerID_ContactID

外键关系:FK_[从表名称]_[主表名称]_[外键列名称]。

示例:FK_StoreContact_Store_CustomerID

聚焦索引:PK_[表名称]_[主键];倘诺是构成主键,使用PK_[表名]_[主键1]_[主键2]。

示例:PK_Store_CustomerID

 
PK_StoreContact_CustomerID_ContactID

独一非聚焦索引:AK_[表名称]_[列名称]。

示例:AK_Store_rowguid

不唯一非集中索引:PK_[表名称]_[列名称]。

示例:IX_Store_SalesPersonID


XML索引:PXML_[表名称]_[Xml类型列名称]。

示例:PXML_Store_Demographics

备注:以上命名参谋Sql
Server 二〇〇六示范数据库,一般只需设计器自动生成,无需拾贰分修改。