Ⅰ 什麼是標識符,標識符的寫法規定是什麼
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 時,下列規則適用:
第一個字元必須是下列字元之一:
Unicode 標准 3.2 所定義的字母。Unicode 中定義的字母包括拉丁字元 a-z 和 A-Z,以及來自其他語言的字母字元。
下劃線 (_)、at 符號 (@) 或數字元號 (#)。
在 SQL Server 中,某些位於標識符開頭位置的符號具有特殊意義。以 at 符號開頭的常規標識符始終表示局部變數或參數,並且不能用作任何其他類型的對象的名稱。以一個數字元號開頭的標識符表示臨時表或過程。以兩個數字元號 (##) 開頭的標識符表示全局臨時對象。雖然數字元號或兩個數字元號字元可用作其他類型對象名的開頭,但是我們建議不要這樣做。
某些 Transact-SQL 函數的名稱以兩個 at 符號 (@@) 開頭。為了避免與這些函數混淆,不應使用以 @@ 開頭的名稱。
後續字元可以包括:
如 Unicode 標准 3.2 中所定義的字母。
基本拉丁字元或其他國家/地區字元中的十進制數字。
at 符號、美元符號 ($)、數字元號或下劃線。
標識符一定不能是 Transact-SQL 保留字。SQL Server 可以保留大寫形式和小寫形式的保留字。
不允許嵌入空格或其他特殊字元。
不允許使用增補字元。
在 Transact-SQL 語句中使用標識符時,不符合這些規則的標識符必須由雙引號或括弧分隔。
取自msdn