識別碼

更新: 2006 年 12 月 12 日

資料庫物件名稱又稱為識別碼。Microsoft SQL Server 2005 中的每一個物件都具有識別碼。伺服器、資料庫與資料庫物件 (如資料表、檢視、資料行、索引、觸發程序、程序、條件約束、規則) 都可以有識別碼。大多數物件都需要識別碼,但對部分物件如條件約束,則是選擇性的需求。

定義物件時會建立物件識別碼。之後就可以使用識別碼來參考物件。例如,以下陳述式會建立具有識別碼 TableX 的資料表,以及具有識別碼 KeyColDescription 的兩個資料行:

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

這個資料表也有一個未命名的條件約束。PRIMARY KEY 條件約束沒有識別碼。

識別碼的定序由其定義階層決定。執行個體階層物件的識別碼 (如登入與資料庫名稱),會被指派執行個體的預設定序。而資料庫中物件 (如資料表、檢視和資料行名稱) 的識別碼,則會被指派資料庫的預設定序。例如,在區分大小寫定序的資料庫中,您可以建立名稱相同但大小寫不同的兩個資料表,但在不區分大小寫定序的資料庫中,就不可以建立名稱相同但大小寫不同的兩個資料表。

識別碼的分類

識別碼分為兩類:

  • 一般識別碼
    符合識別碼格式的規則。在 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 個字元。

一般識別碼的規則

一般識別碼格式的規則視資料庫相容性層級而定。這個層級可使用 sp_dbcmptlevel 來設定。如果相容性層級是 90,則適用以下規則:

  1. 第一個字元必須是以下任一項:
    • Unicode Standard 3.2 中所定義的字母。Unicode 的字母定義包括從 a 到 z 以及從 A 到 Z 的拉丁字元,還有其他語系中的字母字元。
    • 底線 (_)、@ 符號或數字符號 (#)。
      識別碼開頭的某些符號在 SQL Server 中有特殊意義。以 @ 符號開頭的一般識別碼代表本機變數或參數,而且不能做為任何其他類型之物件的名稱。開頭為 # 符號的識別碼代表暫存資料表或程序。開頭為兩個 ## 符號的識別碼代表全域暫存物件。雖然 # 符號或兩個 ## 符號字元可做為其他類型之物件的名稱開頭,但是不建議此用法。
      部分 Transact-SQL 功能的名稱會以兩個 @@ 符號為開頭。為了避免與這些功能產生混淆,不應該使用以 @@ 為開頭的名稱。
  2. 可包含的後續字元如下:
    • Unicode Standard 3.2 中所定義的字母。
    • 其他 Basic Latin 或其他國家 (地區) 字母中的十進位數字。
    • @ 符號、錢幣符號 ($)、數字符號或底線。
  3. 識別碼必須是 Transact-SQL 保留字。SQL Server 保留大、小寫版本的保留字。
  4. 不允許內嵌的空格或特殊字元。
  5. 不允許補充字元。

在 Transact-SQL 陳述式中使用識別碼時,如果識別碼與上述規則不符,您必須使用雙引號 ("") 或方括號 ([]) 加以分隔。

ms175874.note(zh-tw,SQL.90).gif附註:
變數名稱與預存程序參數名稱一定要符合一般識別碼規則。

請參閱

概念

分隔識別碼 (Database Engine)

其他資源

ALTER TABLE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CREATE TRIGGER (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)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 新增一般識別碼不允許補充字元的規則。

2006 年 4 月 14 日

變更的內容:
  • 釐清一般識別碼中特殊字元的使用。