古詩詞大全網 - 成語故事 - 什麽是標識符,標識符的寫法規定是什麽?

什麽是標識符,標識符的寫法規定是什麽?

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