1.4 SQL Server对象标识符
现在,已经讲解了SQL Server中对象的方方面面。接下来详细说明SQL Server中对象的命名。
1.4.1 对什么命名
基本上,SQL Server中的所有事物都有一个名字。下面是部分清单:
|
存储过程 |
表 |
列 |
|
视图 |
规则 |
约束 |
|
默认值 |
索引 |
文件组 |
|
触发器 |
数据库 |
服务器 |
|
用户定义函数 |
登录名 |
角色 |
|
全文目录 |
文件 |
用户定义类型 |
|
模式 |
清单还可以继续列下去。我所能想到的大多数事物都有名字,除了行(行并非真正的对象)。关键是要使名称既有用又实用。
1.4.2 命名规则
在SQL Server中,命名的规则不算太严格,在名字中嵌入空格甚至关键字都是允许的。然而,太过随便容易导致错误的选择并带来麻烦。
下面是主要的命名规则:
l 命名对象时,第一个字符必须是Unicode 2.0规范中定义的字母。这包括拉丁字母A-Z和a-z。“A”与“a”是否相同,取决于如何配置服务器,但二者都可以作为对象名的开头。第一个字符之后的字符几乎可以是任何字符。
l 正常对象的名字最多可以有128个字符,临时对象的名字最多为116个字符。
l 名字中使用了SQL Server关键字或者包含了内嵌的空格时,必须用双引号("")或方括号([])括住名字。什么词被认为是关键字,这根据设置的数据库的兼容级别而有所不同。
注意,只有在SET QUOTED_IDENTIFIER ON时,双引号才能够用作列名的分隔符。使用方括号([和])能够避免用户可能的错误设置,但不像双引号那样与平台无关。
这些规则通常被认为是标识符的规则,它们对于SQL Server中所有对象的命名都是适用的。特殊的对象类型可能会有一些附加的规则。
再次强调,要避免在名称中使用SQL Server关键字或嵌入空格,这非常重要。虽然,只要加以限定,这二者在技术上都是合法的,但是,以这样的方式命名将会给你带来无尽的麻烦。






