熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server2005的XML數據類型之基礎篇[1]

2013-11-15 14:53:03  來源: SQL Server 

   引言

  如今在SQL Server XML成為第一流的數據類型借助於基於XML模式的強類型化支持和基於服務器端的XML數據校驗功能現在開發者可以對存儲的XML文檔進行輕松地遠程修改

  作為數據庫開發者許多人都必須大量地涉及XML

  如今在SQL Server 你能以一種新的數據類型的形式把XML存儲在數據庫中

  事實上在SQL Server 中就已經包括了一些XML特征其中最關鍵的特征是使用FOR XML語句以XML形式返回結果SQL Server 的功能則明顯不同在SQL Server XML是一種真正的數據類型這意味著你可以使用XML作為表和視圖中的列XML可以用於TSQL語句中或作為存儲過程的參數現在你可以直接在數據庫中存儲查詢和管理XML文件

  更重要的是現在你還能規定你的XML必須遵從的模式

  在SQL Server 除了提供機制以校驗你的數據庫中的XML類型之外它還允許你描述要被存儲的復雜數據類型並且提供一個引擎來強制施加這些規則

   使用XML數據類型

  其實XML數據類型與SQL Server中的其它數據類型並不存在根本的區別你可以把它用在使用任何普通SQL數據類型的地方例如下列語句創建一個XML變量並用一個XML填充它

DECLARE @doc xml
SELECT @doc = <Team name=Braves />
  另外你還可以使用一個查詢和SQL Server的FOR XML語法來填充一個XML變量

SELECT @doc =
(SELECT * FROM PersonContact FOR XML AUTO)
  XML數據類型不僅可以作為變量使用也可以應用於表列中你還能分配缺省值並且支持NOT NULL約束

CREATE TABLE Team
(
TeamID int identity not null
TeamDoc xml DEFAULT <Team /> NOT NULL
)
  注意SQL Server 的XML功能與SQL Server 中具有明顯的不同

  把XML數據插入到表格中只需要用字符串形式的XML指定即可

  下列示例插入一組記錄

INSERT INTO Team (TeamDoc)
VALUES (
<Team name=Braves
<Players>
<Pitcher name=John Smoltz
role=Closer/>
</Players>
</Team>);
INSERT INTO Team (TeamDoc)
VALUES (
<Team name=Red Sox
<Players>
<Pitcher name=Petro Martinez
role=Starter/>
</Players>
</Team>);


  當在SQL Server 中創建XML的實例時唯一的轉換是從一個字符串轉換成一個XML類型同樣沿著相反的方向你只可以把XML類型轉換成一個字符串類型在text和ntext類型之間轉換是不允許的

   XML數據類型的限制

  盡管在SQL Server 中XML數據類型就象許多其它數據類型一樣對待但是還存在一些如何使用它的具體限制這些限制是

  · XML類型不能轉換成text或ntext數據類型

  · 除了string類型沒有其它數據類型能夠轉換成XML

  · XML列不能應用於GROUP BY語句中

  · 分布式局部(partitioned)視圖不能包含XML數據類型

  · sql_variant實例的使用不能把XML作為一種子類型

  · XML列不能成為主鍵或外鍵的一部分

  · XML列不能指定為唯一的

  · COLLATE子句不能被使用在XML列上

  · XML列不能加入到規則中

  · 唯一可應用於XML列的內置標量函數是ISNULL和COALESCE沒有任何其它內置標量函數支持使用XML類型

  · 表中最多只能擁有個XML列

  · 具有XML列的表不能有一個超過列的主鍵

  · 具有XML列的表不能有一個timestamp數據類型作為它們的主鍵的一部分

  · 存儲在數據庫中的XML僅支持級的層次

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22487.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.