3.7.1 标识符
标识符就是指用来定义服务器、数据库、各种数据库对象(如表、视图、列、索引、触发器、存储过程、约束及规则等)和变量等名称的字符串,不区分大小写。SQL Server提供了两种类型的标识符:常规标识符和分隔标识符。常规标识符和分隔标识符包含的字符数都必须在1~128。对于本地临时表,标识符最多可以有116个字符。
(1)常规标识符
符合标识符的格式规则,不需要使用分隔标识符进行分隔。常规标识符的格式规则如下:
第一个字符必须是Unicode标准3.2定义的字母(如a-z和A-Z以及来自其他语言的字母字符)、下画线(_)、at符号(@)或数字符号(#);
后续字符可以是Unicode标准3.2定义的字母、基本拉丁字符或其他国家/地区字符中的十进制数字、at符号(@)、美元符号($)、数字符号(#)或下画线(_);
标识符不能是Transact-SQL保留字;
标识符内不能嵌入空格或特殊字符。
(2)分隔标识符
使用双引号或方括号等起到分隔作用的符号来限定标识符。注意:不符合格式规则的标识符必须由双引号或方括号分隔。例如,下面语句中的my table不符合标识符规则,因为my table中出现了空格,因此必须使用分隔符进行分隔:
CREATE TABLE[my table](No CHAR(3));
(3)数据库对象命名规则
数据库对象的名称即为其标识符,数据库对象名称由1~128个字符组成,不区分大小写。大多数数据库对象要求带有标识符,但有些对象(如约束),标识符是可选的。一个数据库对象名的引用是由4部分组成的名称,其基本格式如下:
其中,
server_name:指定链接的服务器名称或远程服务器名称;
database_name:如果对象驻留在SQL Server的本地实例中,则指定SQL Server数据库的名称。如果对象在链接服务器中,则database_name将指定OLE(Object Link and Embed)DB目录;
schema_name:如果对象在SQL Server数据库中,则指定包含对象的架构的名称。如果对象在链接服务器中,则schema_name将指定OLE DB架构名称;
object_name:对象的名称。
在实际使用时,使用全称比较烦琐,因此引用某个特定对象时,不必总是指定服务器、数据库和架构,没有指明的部分则使用默认值。通常,默认服务器为本地服务器,可以使用@@servername查看正在运行SQL Server的本地服务器的名称;默认数据库为当前可用数据库,可以使用标量函数DB_NAME()查看当前可用数据库,也可以使用USE语句更改当前可用数据库;默认架构为dbo,可以使用标量函数SCHEMA_NAME()查看默认架构。