第 22 章 SQL Server與XML
SQL Server XML基本語法 - SQL Server XML概觀 For XML語法(說明於22-1-2節) Xml資料型別(說明於22-1-3節) xml型別欄位加入query方法(說明於22-2-1節) XML索引(說明於22-2-2節) schema驗證功能(說明於22-2-3節) XML DML(Data Manipulation Language,資料操作語言,說明於22-2-4節)
SQL Server XML基本語法 - FOR XML語法 FOR XML語法用來將資料以XML的格式做輸出,不過其輸出的格式為簡易型,其語法如下: FOR XML { RAW | AUTO | EXPLICIT | PATH | ROOT}
SQL Server XML基本語法 - xml資料型別 XML格式自從W3C組織定義為標準之後,已經成為商業上資料交換的標準格式,最大好處就在於跨平台的支援,這裡所謂的跨平台,仍是如Windows系統、Linux系統與大型主機等等,因此XML資料在處理上的效能即成為重要的課題。 大部份的資料庫系統,都是以關聯式的資料結構,做為儲存資料的方式,但XML資料格式以階層方式做為儲存,早期的資料庫管理系統並不支援此種格式的欄位,因此資料庫管理系統本身無法對XML資料做最佳化的儲存與管理,更無法利用XML的查詢功能,例如:XPath語法直接查閱。
SQL Server XML基本語法 - xml資料型別 現今新版本的資料庫管理系統幾乎都支援XML的資料格式,並且增加特抒指令,特別處理XML資料,同時亦可直接將關聯式資料轉換成XML階層式的資料做輸出,軟體系統將不必再做資料轉換的動作,即可將關聯式資料以XML格式做處理。
SQL Server XML基本語法 - xml資料型別 下圖為Microsoft SQL Server的資料表設計畫面,您可以在資料型別的下拉式清單中,找到xml資料型別項目。
SQL Server XML基本語法 - xml資料型別 在SQL Server中新增了XML Schema的集合物件,透過Create()方法將XML Schema新增到集合物件中,其語法如下: CREATE XML SCHEMA COLLECTION collectionName AS 'Schema內容‘ 建立完XML SCHEMA COLLECTION物件後,以Create語法新增資料表時,可以將該XML SCHEMA COLLECTION名稱指派到xml資料型別之後,將來新增或更新資料到該欄位時,會取出XML SCHEMA內容做判斷,其語法如下: Create 資料表名稱 (欄位名稱 xml( [XML SCHEMA Collection Name]))
SQL Server XML進階語法 - xml型別欄位加入query方法 SQL Server直接支援以XPath語法的方式做查詢,當該資料欄位的型別為xml時,可以使用如下的語法進行查詢: xml資料欄位.query('XPath語法')
SQL Server XML進階語法 - xml型別欄位加入query方法 let指令 let指令主要用來指定值給變數時使用,其功能等同於程式設計中的『變數=值』的語法。let 語法如下: let $變數名稱 := 值(或運算式) 例如:let $bookprice := 590。如此便可設定bookprice變數值為590。
SQL Server XML進階語法 - XML索引 SQL Server 2005與2008除了提供xml資料格式的欄位,同時提供針對xml資料型別的索引,其可分成建立主索引與次索引兩種,建立主索引語法語法如下: CREATE PRIMARY XML INDEX 主索引名稱 ON 資料表名稱 (xml欄位名稱) 建立次索引語法如下所示: CREATE XML INDEX次索引名稱 ON 資料表名稱 (xml欄位名稱) USING XML INDEX 主索引名稱 FOR PATH
SQL Server XML進階語法 - schema驗證功能 支援lax驗證 支援dateTime、date及time的驗證方式 支援union及list
SQL Server XML進階語法 - XML DML SQL Server 2005之後對XML DML的支援只適用於xml資料型別的欄位或變數,透過modify方法,代入XML DML陳述式進行資料操作,例如:透過insert,delete及replace value of對資料進行新增,刪除及修改的動作。 以下程式示範使用insert語法將新節點插入到XML變數中。
SQL Server XML進階語法 - XML DML SQL Server 2005之後對XML DML的支援只適用於xml資料型別的欄位或變數,透過modify方法,代入XML DML陳述式進行資料操作,例如:透過insert,delete及replace value of對資料進行新增,刪除及修改的動作。 以下程式示範使用insert語法將新節點插入到XML變數中。