- SQL Server 2016 從入門到實戰(zhàn)(視頻教學版)
- 孫亞男
- 2119字
- 2019-12-12 17:28:43
3.2 SQL Server的命名規(guī)則
為了提供完善的數(shù)據(jù)庫管理機制,SQL Server 2016設計了嚴格的命名規(guī)則。用戶在創(chuàng)建或引用數(shù)據(jù)庫實體(如表、索引、約束等)時,必須遵守SQL Server 2016的命名規(guī)則,否則有可能發(fā)生一些難以預料和檢查的錯誤。本節(jié)將具體講解標識符的分類和格式、數(shù)據(jù)庫對象的命名規(guī)則與實例命名規(guī)則。
3.2.1 標識符
SQL Server 2016的所有對象,包括服務器、數(shù)據(jù)庫以及數(shù)據(jù)庫對象,如表、視圖、列、索引、觸發(fā)器、存儲過程、規(guī)則、默認值和約束等都可以有一個標識符。對絕大多數(shù)對象來說,標識符是必不可少的,但對某些對象(如約束)來說,是否規(guī)定標識符是可選的。對象的標識符一般在創(chuàng)建對象時定義,作為引用對象的工具使用。
例如下面的SQL語句:
CREATE TABLE student ( id int primary key, name varchar(20) )
這個例子創(chuàng)建了一個表格,表格的名字是一個標識符:student。表格中定義了兩列,列的名字分別是id和name,它們都是合法的標識符。此外,上述語句還自動定義了另一個未命名的主鍵約束。
1.標識符分類
具體來說,SQL Server 2016共定義了兩種類型的標識符:常規(guī)標識符(Regular Identifier)和分隔標識符(Delimited Identifier)。
(1)常規(guī)標識符:常規(guī)標識符嚴格遵守標識符有關格式的規(guī)定,在T-SQL語句中,凡是常規(guī)標識符都不必使用分隔符,如使用[]和‘ ’來進行分隔。例如,上述例子中使用的表名student就是一個常規(guī)標識符,在student上不必添加分隔符。
(2)分隔標識符:那些使用了分隔符號(如[]和‘ ’等)來進行位置限定的標識符。使用了分隔標識符,既可以遵守標識符命名規(guī)則,又可以不遵守標識符命名規(guī)則。需要注意的是,遵守了標識符命名規(guī)則的標識符,加分隔符與不加分隔符是等效的。例如,SELECT * FROM[student]語句從student表格中查詢出所有數(shù)據(jù),其功能與SELECT * FROM student語句等效。這是因為在“[]”中的標識符遵守標識符命名規(guī)則,“[]”被忽略不計。
如果是不遵守標識符命名規(guī)則的標識符,那么在T-SQL語句中就必須使用分隔符號加以限定,如:
SELECT * FROM [my table] WHERE [order]=10
在這個例子中,必須使用分隔標識符,因為在FROM子句中的標識符my table中含有空格,而where子句中的標識符order是系統(tǒng)保留字。
這兩個標識符都不遵守標識符命名規(guī)則,必須使用分隔符,否則無法通過代碼編譯。
2.標識符格式
與程序設計語言類似,SQL Server 2016中的標識符必須符合一定的格式規(guī)定,其具體內(nèi)容如下:
(1)標識符必須是統(tǒng)一碼(Unicode)2.0標準中規(guī)定的字符,以及其他一些語言字符,如漢字等。
(2)標識符后的字符可以是“_”“@”“#”“$”及數(shù)字。
(3)標識符不允許是T-SQL的保留字。
(4)標識符內(nèi)不允許有空格和特殊字符。
需要注意的是,標識符最多可以容納128個字符。此外,某些以特殊符號開頭的標識符在SQL Server中具有特定的含義。例如,以“@”開頭的標識符表示這是一個局部變量或一個函數(shù)的參數(shù),以“#”開頭的標識符表示這是一個臨時表或一個存儲過程,以“##”開頭的標識符表示這是一個全局的臨時數(shù)據(jù)庫對象。在T-SQL中,全局變量以“@@”開頭。
3.2.2 對象命名規(guī)則
SQL Server 2016使用T-SQL語言,該語言中使用的數(shù)據(jù)對象包括表、視圖、存儲過程、觸發(fā)器等,這些對象的標識符也需符合如下命名規(guī)則。
(1)第一個字符必須是這些字符之一:字母a~z和A~Z、來自其他語言的字母字符、下劃線_、@或者數(shù)字符號#。
(2)后續(xù)字符可以是所有的字母、十進制數(shù)字、@符號、美元符號($)、數(shù)字符號或下劃線。
除非另外指定,否則所有對數(shù)據(jù)庫對象名的T-SQL引用可以是由4部分組成的名稱,格式如下:
[ server_name.[database_name].[owner_name]. | database_name.[owner_name]. | owner_name. ] ] object_name
具體的語法解釋如下:
● server_name指定鏈接服務器名稱或遠程服務器名稱。
● 當對象駐留在SQL Server 2016數(shù)據(jù)庫中時,database_name指定該SQL Server 2016數(shù)據(jù)庫的名稱;當對象在鏈接服務器中時,則指定OLE DB目錄。
● 如果對象在SQL Server 2016數(shù)據(jù)庫中,owner_name指定擁有該對象的用戶;當對象在鏈接服務器中時,則指定OLE DB架構名稱。
● object_name是引用對象的名稱。
引用對象名的格式如表3.1所示。
表3.1 引用對象名的格式

當引用某個特定對象時,不必總是為SQL Server指定標識該對象的服務器、數(shù)據(jù)庫和所有者??梢允÷灾虚g級節(jié)點,而使用句點表示這些位置。對象名的有效格式是:
server.database.owner.object server.database..object server..owner.object server...object database.owner.object database..object owner.object 對象
3.2.3 實例命名規(guī)則
所謂SQL實例,即SQL服務器引擎。每個SQL Server 2016數(shù)據(jù)庫引擎實例各有一套不為其他實例共享的系統(tǒng)及用戶數(shù)據(jù)庫,在一臺計算機上可以安裝多個SQL Server 2016,每個SQL Server 2016就可以理解為一個實例。
實例又分為“默認實例”和“命名實例”,如果在一臺計算機上安裝第一個SQL Server,命名設置保持默認,那么這個實例就是默認實例。在SQL Server 2016中,默認實例的名字采用計算機名,實例的名字一般由計算機名字和實例名字兩部分組成。為更好地理解實例,讀者可以從如下幾個方面著手:
(1)實例名稱是一個SQL Server服務的名稱,可以為空或者任何名稱(英文字符),實例名稱不能重復。
(2)如果安裝時一直提示寫實例名稱,說明已經(jīng)存在一個默認名稱的SQL Server實例,它使用了默認的空名稱。
(3)一個實例就是一個單獨的SQL Server服務。如果安裝了指定的SQL Server實例,可以在Windows服務列表中看到該實例的服務名稱。
(4)連接數(shù)據(jù)庫時,必須指明數(shù)據(jù)庫實例名稱。例如,使用默認配置安裝了一個SQL Server后,它的實例名稱為空。
(5)再次執(zhí)行SQL Server安裝程序,并不會提示已經(jīng)安裝了SQL Server,而是在設置實例名稱時,讓用戶指定一個新的實例名稱,才能進行下一步。
(6)卸載SQL Server時,可以選擇卸載一個SQL Server實例。
正確掌握數(shù)據(jù)庫的命名和引用方式是用好SQL Server的前提,也有助于用戶理解SQL Server中的其他內(nèi)容。
- Java面向對象軟件開發(fā)
- 劍指JVM:虛擬機實踐與性能調(diào)優(yōu)
- Unity 2020 Mobile Game Development
- Elasticsearch Server(Third Edition)
- 案例式C語言程序設計實驗指導
- Learning Hadoop 2
- Buildbox 2.x Game Development
- 微信小程序開發(fā)實戰(zhàn):設計·運營·變現(xiàn)(圖解案例版)
- Magento 2 Beginners Guide
- The Statistics and Calculus with Python Workshop
- Mastering OpenStack
- INSTANT PLC Programming with RSLogix 5000
- Blender 3D Cookbook
- 計算機常用算法與程序設計教程(第2版)
- MonoTouch應用開發(fā)實踐指南:使用C#和.NET開發(fā)iOS應用