Quoted Identifier是SQL Server中的一个重要概念,它与规范化标识符(Normalized Identifiers)密切相关。在本文中,我们将介绍SQL Server中的Quoted Identifier是什么,如何使用它来规范化标识符。
Quoted Identifier是什么
Quoted Identifier是一种机制,用于识别SQL语句中的对象名称。在SQL Server中,对象名称可以是数据库、表、列、存储过程、函数等等。Quoted Identifier机制指定了SQL Server将如何解释对象名称,以及它们是否需要加引号(Quotation Marks)来区分它们与SQL语句中其余部分的差异。
在SQL Server中,对象名称通常被称为标识符(Identifier)。标识符可以是简单的名称,如“customers”或“orders”,也可以是带有空格、特殊字符或保留字的复杂名称,如“[my customers]”或“[employee name]”。
需要注意的是,标识符必须遵循一些规则。例如,它们必须以字母字符(包括下划线“_”)开头,不能包含空格或标点符号等等。
如何使用Quoted Identifier
Quoted Identifier的主要作用是允许使用保留字、空格或特殊字符等直接嵌入在对象名称中。例如,下面的SQL语句使用 Quoted Identifier 来标识列名带有空格的表
```
SELECT [employee name], [job title] FROM [human resources].[employee]
```
要使用Quoted Identifier,需要使用一对单引号或双引号将对象名称括起来。例如,如果希望将包含空格或保留字的名称视为标识符,则可以使用以下语法:
```
SELECT "my identifier", "select" FROM "my table"
```
在这个例子中,由于双引号包括了标识符,因此可以将包含保留字的名称视为标识符。由于名称中有空格,因此需要将其放在引号中。
Quoted Identifier还可以用于在SQL语句中嵌入特殊字符,例如:
```
SELECT [order id], [order date/time], [total cost] FROM [northwind].[dbo].[orders]
```
在这个例子中,方括号([])用来指定列名。方括号可以将带空格的名称视为标识符,而不需要使用引号。
规范化标识符
规范化标识符是一种将不同数据库中的对象名称区分开来的机制。在不同的数据库中,可能会存在相同名称的表、列或其他对象,如果不加以区分,就会导致不可预知的结果。规范化标识符的作用就是避免这种情况的发生,它将所有对象名称转换为特定格式,确保它们在不同的数据库中是唯一的。
规范化标识符的格式由三部分组成:
1. 服务器名称(如果有的话)
2. 数据库名称
3. 对象名称
例如,以下是一个使用规范化标识符的查询:
```
SELECT [customers].[customer id], [orders].[order date]
FROM [northwind].[dbo].[customers] INNER JOIN
[northwind].[dbo].[orders]
ON [customers].[customer id] = [orders].[customer id]
```
在这个例子中,三部分规范化的标识符分别是“northwind”、“dbo”和“customers”,“orders”。
需要注意的是,在使用规范化标识符时,所有的对象名称都必须加上方括号。否则,SQL Server可能会将对象名解释为关键字或其他特殊符号。
结论
Quoted Identifier是规范化标识符的重要组成部分。它允许在SQL Server中使用包含空格、保留字或特殊字符的对象名称,同时也避免了在不同数据库中出现相同对象名称的问题。在SQL查询中,使用Quoted Identifier和规范化标识符是一个好的习惯,它可以提高代码的可读性和可维护性。