SQL Server为了完善数据库的管理机制,设计了严格的命名规则。用户在创建数据库及数据库对象时必须严格遵守SQL Server的命名规则。本节将对标识符、对象和实例的命名规则进行详细的介绍。
在SQL Server中,服务器、数据库和数据库对象(如表、视图、列、索引、触发器、过程、约束和规则等)都有标识符,数据库对象的名称被看成该对象的标识符。大多数对象要求带有标识符,但有些对象(如约束)中标识符是可选项。
对象标识符是在定义对象时创建的,标识符随后用于引用该对象,下面分别对标识符格式及标识符分类进行介绍。
在定义标识符时必须遵守以下规定。
(1)标识符的首字符必须是下列字符之一。
统一码(Unicode)2.0标准中定义的字母,包括拉丁字母a~z和A~Z,以及来自其他语言的字符。
下画线“_”、符号“@”或者数字符号“#”。
在SQL Server中,某些处于标识符开始位置的符号具有特殊意义。以“@”符号开始的标识符表示局部变量或参数;以一个数字符号“#”开始的标识符表示临时表或过程,如表“#gzb”就是一张临时表;以双数字符号“##”开始的标识符表示全局临时对象,如表“##gzb”则是全局临时表。
某些SQL函数的名称以@@符号开始,为避免混淆这些函数,建议不要使用以@@开始的名称。
(2)标识符的后续字符可以是以下3种。
统一码2.0标准中定义的字母。
来自拉丁字母或其他国家/地区脚本的十进制数字。
“@”符号、美元符号“$”、数字符号“#”或下画线“_”。
(3)标识符不允许是SQL的保留字。
(4)不允许嵌入空格或其他特殊字符。
例如,要为明日科技公司创建一个工资管理系统,则可以将其数据库命名为MR_Salary。名字除了要遵守命名规则以外,最好还能准确表达数据库的内容,本例中的数据库名称是以每个字的大写字母命名的,其中还使用了下画线“_”。
SQL Server将标识符分为以下两种类型。
常规标识符:符合标识符的格式规则。
分隔标识符:包含在双引号(" ")或者方括号([ ])内的标识符。该标识符可以不符合标识符的格式规则,如[MR GZGLXT],MR和GZGLXT之间含有空格,但因为使用了方括号,所以视为分隔标识符。
常规标识符和分隔标识符包含的字符数必须在1~128,对于本地临时表,标识符最多可以有116个字符。
SQL Server数据库对象的名字由1~128个字符组成,不区分大小写。使用标识符也可以作为对象的名称。
在一个数据库中创建了一个数据库对象后,数据库对象的完整名称应该由服务器名、数据库名、拥有者名和对象名4个部分组成,其语法格式如下:
[ [ [ server. ] [ database ] .] [ owner_name ] .] object_name
服务器、数据库和所有者的名称即所谓的对象名限定符。当引用一个对象时,不需要指定服务器、数据库和所有者,可以利用句号标出它们的位置,从而省略限定符。
对象名的有效格式如下:
server.database.owner_name.object_name
server.database..object_name
server..owner_name.object_name
server...object_name
database.owner_name.object_name
database..object_name
owner_name.object_name
object_name
指定了所有4个部分的对象名被称为完全合法名称。
不允许存在4个部分名称完全相同的数据库对象。在同一个数据库中可以存在两个名为EXAMPLE的表格,但前提必须是这两个表的拥有者不同。
SQL Server数据库提供了以下两种类型的实例。
默认实例:此实例由运行它的计算机的网络名称标识。使用以前版本SQL Server客户端软件的应用程序可以连接到默认实例。但是,一台计算机上每次只能有一个版本作为默认实例运行。
命名实例:计算机可以同时运行任意一个SQL Server命名实例。实例通过计算机的网络名加上实例名以<计算机名>\<实例名>格式进行标识,即computer_name\instance_name,但该实例名不能超过16个字符。