爲了提供完善的數據庫管理機制,SQL Server 設計了嚴格的命名規則。在創建或引用數據庫實體,如表、索引、約束等時,必須遵守SQL Server 的命名規則,否則有可能發生一些難以預料和檢查的錯誤。
本文將講述:標識符的分類和格式規定;數據庫對象的命名規定與使用原則。希望對您會有所幫助。
標識符分類
SQL Server的所有對象,包括服務器、數據庫以及數據庫對象,如表、視圖、列、索引、觸發器、存儲過程、規則、默認值和約束等都可以有一個標識符。對絕大多數對象來說,標識符是必不可少的,但對某些對象如約束來說,是否規定標識符是可選的。對象的標識符一般在創建對象時定義,作爲引用對象的工具使用。
例如下面的SQL語句:
Create table student
(
id int primary key,
name varchar(20)
)
這個例子創建了一個表格,表格的名字是一個標識符:student;表格中定義了兩列,列的名字分別是id,name,他們都是合法的標識符。這個例子還定義另外一個未命名的主鍵約束。
SQL Server一共定義了兩種類型的標識符:規則標識符(Regular identifier)和界定標識符(Delimited identifier)。
規則標識符
規則標識符嚴格遵守標識符有關格式的規定。所以在T-SQL語句中凡是規則標識符都不必使用界定符,如[]和‘’,來進行界定。
如上述例子中使用的表名student 就是一個規則標識符,在student上不必添加界定符。
界定標識符
界定標識符是那些使用瞭如[]和‘’等界定符號來進行位置限定的標識符,使用了界定標識符,既可以遵守標識符命名規則,也可以不遵守標識符命名規則。
Select * from [student] 是要從student 表格中查詢出所有的數據與
Select * from student 等效。
爲什麼呢?因爲在“[]”中的標識符遵守標識符命名規則,“[]”被忽略不計。
但如果是不遵守標識符命名規則的標識符,那麼在T-SQL語句中必須使用界定符號加以限定,如:
Select * from [my table]
Where [order]=10
在這個例子中,必須使用界定標識符,因爲在from子句中的標識符my talbe中含有空格,而where子句中的標識符order 是系統保留字(在查詢分析器裏“order”變藍色)。這兩個標識符都不遵守標識符命名規則,必須使用界定符,否則無法通過代碼編譯。
標識符格式
標識符格式的規定,其具體內容如下:
標識符的首字母必須是以下兩種情況之一:
所有在統一碼(Unicode)2.0標準規定的字符,包括26個英文字母a-z和A-Z,以及其他一些語言字符,如漢字。例如可以給一個表格命名爲“學生基本情況”。下劃線“-”、“@”或“#”。
標識符首字母後的字符可以是:
所有在統一碼(Unicode)2.0標準規定的字符,包括26個英文字母a-z和A-Z,以及其他一些語言字符,如漢字。下劃線“-”、“@”、“$”或“#”。
0,1,2,3,4,5,6,7,8,9。
標識符不允許是T-SQL的保留字。
由於T-SQL不區分大小寫,所以無論是保留字的大寫還是小寫都不允許使用。
標識符內部不允許有空格或特殊字符。
Select * from stu[de]nt –編譯器將返回錯誤信息。因爲在標識符stu[de]nt中包含了特殊字符“[”和“]”,所以在編譯上述語句時出錯。
?
以某些特殊符號開頭的標識符在SQL Server系統中具有特定的含義。如“@”開頭的標識符表示這是一個局部變量或是一個函數的參數;以“#”開頭的標識符表示這是一個臨時表或存儲過程;一個以“##”開頭的標識符表示這是一個全局的臨時數據庫對象。T-SQL的全局變量以標誌“@@”開頭。爲避免同這些全局變量混淆,建議不要使用“@@”作爲標識符的開始。
無論是界定標識符還是規則標識符都最多隻能容納128個字符,對於本地的臨時表最多可以有116個字符。
對象命名規則
SQL Server 2005 的數據庫對象名字由1-128個字符組成,不區分大小寫。在一個數據庫中創建了一個數據庫對象後,數據庫對象的全名應該由服務器名、數據庫名、擁有者名和對象名這四個部分組成,格式如下:
[[[server.][database].][owner_name].]object_name 命名必須都要符合標識符的規定。
在實際引用對象時,可以省略其中某部分的名稱,只留下空白的位置。
實例的命名習慣
在SQL Server 2005中默認實例的名字採用計算機名,實例的名字一般由計算機名字和實例名字兩部分組成。
總之,正確掌握數據庫的命名和引用方式是用好SQL Server 2005的前提,也有助於用戶理解SQL Server 2005中的其他內容。