共用方式為


資料庫標識碼

資料庫物件名稱稱為其識別碼。 Microsoft SQL Server 中的所有內容都可以有標識符。 伺服器、資料庫和資料庫物件,例如數據表、檢視表、數據行、索引、觸發程式、程序、條件約束和規則,都可以有標識符。 大部分物件都需要標識符,但對於某些物件而言是選擇性的,例如條件約束。

定義物件時,會建立物件標識符。 接著會使用識別碼來引用物件。 例如,下列語句會建立標識符為 的TableX數據表,以及標識碼為 和DescriptionKeyCol兩個數據行:

CREATE TABLE TableX  
(KeyCol INT PRIMARY KEY, Description nvarchar(80))  

此數據表也有未命名的條件約束。 約束條件 PRIMARY KEY 沒有識別碼。

標識碼的定序取決於其定義的層級。 執行個體層級物件 (如登入和資料庫名稱) 的識別碼會被指派執行個體的預設定序。 資料庫中物件的識別碼,例如資料表、檢視表和欄位名稱,會被指派資料庫的預設排序規則。 例如,在區分大小寫的定序資料庫中,可以建立兩個只有名稱大小寫不同的數據表,但在不區分大小寫的定序資料庫中則無法建立。

備註

變數的名稱,或函式和預存程式的參數必須符合 Transact-SQL 標識符的規則。

標識子的類別

識別碼有兩個類別:

一般標識碼
遵守標識碼格式的規則。 一般識別符在 Transact-SQL 語句中使用時不會分隔。

SELECT *  
FROM TableX  
WHERE KeyCol = 124  

定界識別符
以雙引號 (“) 或括弧 ([ ]) 括住。 符合標識碼格式規則的識別碼可能不會被分隔。 例如:

SELECT *  
FROM [TableX]         --Delimiter is optional.  
WHERE [KeyCol] = 124  --Delimiter is optional.  

不符合標識碼所有規則的標識碼必須在 Transact-SQL 語句中分隔。 例如:

SELECT *  
FROM [My Table]      --Identifier contains a space and uses a reserved keyword.  
WHERE [order] = 10   --Identifier is a reserved keyword.  

一般和分隔標識碼必須包含從 1 到 128 個字元。 針對本機臨時表,識別符號最多可以有 116 個字元。

一般標識碼的規則

變數、函式和預存程式的名稱必須符合下列 Transact-SQL 標識符的規則。

  1. 第一個字元必須是下列其中一個:

    • Unicode Standard 3.2 所定義的字母。 字母的 Unicode 定義包括從 到 z 的拉丁字元、從 A 到 Z,以及其他語言的字母字元。

    • 底線 (_), 符號 (@), 或數字元號 (#) 。

      標識符開頭的特定符號在 SQL Server 中具有特殊意義。 以 at 符號開頭的一般標識元一律表示局部變數或參數,不能當做任何其他物件類型的名稱使用。 以數位符號開頭的標識符表示臨時表或程式。 以雙數字號 (##) 開頭的標識元表示全域暫存物件。 雖然數字符號或雙數位符號字元可以用來開始其他類型的物件名稱,但我們不建議這種做法。

      有些 Transact-SQL 函式的名稱開頭為雙引號 (@@)。 為了避免與這些函式混淆,您不應該使用以 @@开头的名称。

  2. 後續字元可以包含下列各項:

    • Unicode Standard 3.2 中所定義的字母。

    • 基本拉丁文或其他國家文字系統的十進位數。

    • at 符號、貨幣符號 ($)、數位符號或底線。

  3. 標識元不得為 Transact-SQL 保留字。 SQL Server 會保留預留字的大寫和小寫版本。 當 Transact-SQL 語句中使用標識符時,不符合這些規則的標識碼必須以雙引號或括號分隔。 保留的字組取決於資料庫相容性層級。 您可以使用 ALTER DATABASE 語句來設定此層級。

  4. 不允許內嵌空格或特殊字元。

  5. 不允許增補字元。

當 Transact-SQL 語句中使用標識符時,不符合這些規則的標識碼必須以雙引號或括號分隔。

備註

一般標識碼格式的某些規則取決於資料庫相容性層級。 您可以使用 ALTER DATABASE 來設定此層級。

另請參閱

ALTER TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
創建預設值(Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
創建觸發器 (Transact-SQL)
CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
保留關鍵字 (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)