国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL2008 詳解直接將XML存入到SQL中

2024-08-31 01:04:35
字體:
供稿:網(wǎng)友

一、前言

從 SQL Server 2005 開始,就增加了 xml 字段類型,也就是說可以直接把 xml 內(nèi)容存儲在該字段中,并且 SQL Server 會把它當(dāng)作 xml 來對待,而不是當(dāng)作 varchar 來對待。

隨著SQL Server 對XML字段的支持,相應(yīng)的,T-SQL語句也提供了大量對XML操作的功能來配合SQL Server中XML字段的使用。本文主要說明如何使用SQL語句對XML進(jìn)行操作。

二、定義XML字段

          在進(jìn)行數(shù)據(jù)庫的設(shè)計中,我們可以在表設(shè)計器中,很方便的將一個字段定義為XML類型。需要注意的是,XML字段不能用來作為主鍵或者索引鍵。同樣,我們也可以使用SQL語句來創(chuàng)建使用XML字段的數(shù)據(jù)表,下面的語句創(chuàng)建一個名為“docs”的表,該表帶有整型主鍵“pk”和非類型化的 XML 列“xCol”:

CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)

XML類型除了在表中使用,還可以在存儲過程、事務(wù)、函數(shù)等中出現(xiàn)。下面我們來完成我們對XML操作的第一步,使用SQL語句定義一個XML類型的數(shù)據(jù),并為它賦值:

set @xmlDoc='<?xml version="1.0" ?>    <books>       <book id="0001"><title>C Program</title><author>David</author><price>21</price> </book> <book id="0002"><title>你必須知道的.NET</title><author>王濤</author><price>79</price> </book>  </books>'select @xmlDoc 

三、XML字段注意點(diǎn)

三、XML字段注意點(diǎn)

  • SQL Server 中以 Unicode(UTF-16) 來存儲 XML 數(shù)據(jù)。
  • XML 字段最多可存儲 2G 的數(shù)據(jù)。
  • 可以像插入字符串一樣向 XML 字段寫入內(nèi)容。
  • 當(dāng)在 xml 數(shù)據(jù)類型實例中存儲 XML 數(shù)據(jù)時,不會保留 XML 聲明(如 <?xml version='1.0'?>)。
  • 插入的 xml 內(nèi)容的屬性的順序可能會與原 xml 實例的順序變化。
  • 不保留屬性值前后的單引號和雙引號。
  • 不保留命名空間前綴。
  • 可以對 XML 字段中的 XML 內(nèi)容建立索引。
  • 可以對 XML 字段中的 XML 內(nèi)容建立約束,比如 age 節(jié)點(diǎn)必須大于等于 18。
  • 可以通過創(chuàng)建架構(gòu)來對 XML 進(jìn)行類型化,比如讓 xml 內(nèi)容的 <user> 節(jié)點(diǎn)下面必須有 <fullname> 節(jié)點(diǎn)。

四、查詢操作

在定義了一個XML類型的數(shù)據(jù)之后,我們最常用的就是查詢操作,下面我們來介紹如何使用SQL語句來進(jìn)行查詢操作的。

          在T-Sql中,提供了兩個對XML類型數(shù)據(jù)進(jìn)行查詢的函數(shù),分別是query(xquery)和value(xquery, dataType),其中,query(xquery)得到的是帶有標(biāo)簽的數(shù)據(jù),而value(xquery, dataType)得到的則是標(biāo)簽的內(nèi)容。接下類我們分別使用這兩個函數(shù)來進(jìn)行查詢。

1、使用query(xquery) 查詢

我們需要得到書的標(biāo)題(title),使用query(xquery)來進(jìn)行查詢,查詢語句為:

select @xmlDoc.query('(books/book/title)[1]')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

2、使用value(xquery, dataType) 查詢

同樣是得到書的標(biāo)題,使用value函數(shù),需要指明兩個參數(shù),一個為xquery, 另一個為得到數(shù)據(jù)的類型。看下面的查詢語句:

select @xmlDoc.value('(books/book/title)[1]', 'nvarchar(max)')

運(yùn)行結(jié)果如圖:

 SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

3、查詢屬性值

無論是使用query還是value,都可以很容易的得到一個節(jié)點(diǎn)的某個屬性值,例如,我們很希望得到book節(jié)點(diǎn)的id,我們這里使用value方法進(jìn)行查詢,語句為:

select @xmlDoc.value('(books/book/@id)[1]', 'nvarchar(max)')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

4、使用xpath進(jìn)行查詢

xpath是.net平臺下支持的,統(tǒng)一的Xml查詢語句。使用XPath可以方便的得到想要的節(jié)點(diǎn),而不用使用where語句。例如,

--得到id為0002的book節(jié)點(diǎn)

select @xmlDoc.query('(/books/book[@id="0002"])')

上面的語句可以獨(dú)立運(yùn)行,它得到的是id為0002的節(jié)點(diǎn)。運(yùn)行結(jié)果如下

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

五、修改操作

         SQL的修改操作包括更新和刪除。SQL提供了modify()方法,實現(xiàn)對Xml的修改操作。modify方法的參數(shù)為XML修改語言。XML修改語言類似于SQL 的Insert、Delete、UpDate,但并不一樣。

1、修改節(jié)點(diǎn)值

我們希望將id為0001的書的價錢(price)修改為100, 我們就可以使用modify方法。代碼如下:

set @xmlDoc.modify('replace value of (/books/book[@id=0001]/price/text())[1] with "100"')

--得到id為0001的book節(jié)點(diǎn)

select @xmlDoc.query('(/books/book[@id="0001"])')

注意:modify方法必須出現(xiàn)在set的后面。運(yùn)行結(jié)果如圖:

 SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

2、刪除節(jié)點(diǎn)

接下來我們來刪除id為0002的節(jié)點(diǎn),代碼如下:

--刪除節(jié)點(diǎn)id為0002的book節(jié)點(diǎn)

set @xmlDoc.modify('delete /books/book[@id=0002]')

select @xmlDoc

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

3、添加節(jié)點(diǎn)

很多時候,我們還需要向xml里面添加節(jié)點(diǎn),這個時候我們一樣需要使用modify方法。下面我們就向id為0001的book節(jié)點(diǎn)中添加一個ISBN節(jié)點(diǎn),代碼如下:

--添加節(jié)點(diǎn)

set @xmlDoc.modify('insert <isbn>78-596-134</isbn> before (/books/book[@id=0001]/price)[1]')select @xmlDoc.query('(/books/book[@id="0001"]/isbn)')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

4、添加和刪除屬性

當(dāng)你學(xué)會對節(jié)點(diǎn)的操作以后,你會發(fā)現(xiàn),很多時候,我們需要對節(jié)點(diǎn)進(jìn)行操作。這個時候我們依然使用modify方法,例如,向id為0001的book節(jié)點(diǎn)中添加一個date屬性,用來存儲出版時間。代碼如下:

--添加屬性

set @xmlDoc.modify('insert attribute date{"2008-11-27"} into (/books/book[@id=0001])[1]')select @xmlDoc.query('(/books/book[@id="0001"])')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

如果你想同時向一個節(jié)點(diǎn)添加多個屬性,你可以使用一個屬性的集合來實現(xiàn),屬性的集合可以寫成:(attribute date{"2008-11-27"}, attribute year{"2008"}),你還可以添加更多。這里就不再舉例了。

5、刪除屬性

刪除一個屬性,例如刪除id為0001 的book節(jié)點(diǎn)的id屬性,我們可以使用如下代碼:

--刪除屬性

set @xmlDoc.modify('delete books/book[@id="0001"]/@id')select @xmlDoc.query('(/books/book)[1]')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

6、修改屬性

修改屬性值也是很常用的,例如把id為0001的book節(jié)點(diǎn)的id屬性修改為0005,我們可以使用如下代碼:

--修改屬性

set @xmlDoc.modify('replace value of ( books/book[@id="0001"]/@id)[1] with "0005"')select @xmlDoc.query('(/books/book)[1]')

運(yùn)行結(jié)果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

經(jīng)過上面的學(xué)習(xí),相信你已經(jīng)可以很好的在SQL中使用Xml類型了,下面是我們沒有提到的:exist()方法,用來判斷指定的節(jié)點(diǎn)是否存在,返回值為true或false; nodes()方法,用來把一組由一個查詢返回的節(jié)點(diǎn)轉(zhuǎn)換成一個類似于結(jié)果集的表中的一組記錄行。 你可以去MSDN查閱  http://msdn.microsoft.com/zh-cn/library/ms190798.aspx。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
日本欧洲一区| 国产美女视频一区二区二三区| 国产爆初菊在线观看免费视频网站| 国产高清av在线| 九九精品视频在线观看九九| 国产福利免费在线观看| 日本中文字幕高清视频| 日本电影全部在线观看网站视频| 精品剧情v国产在线观看| 国产午夜在线观看| 久草在线视频网| 亚洲一区免费在线| 亚洲高清在线免费| 在线视频观看亚洲| 在线亚洲电影| 免费看ww视频网站入口| 天天操天天操一操| av手机免费观看| 国产精品㊣新片速递bt| 精品女厕厕露p撒尿| 超碰在线观看免费版| 国产xxxxx| 久久国产精品久久久久久小说| 国产羞羞视频在线观看| 欧美日韩国产亚洲沙发| 91涩漫在线观看c| 黄色av免费看| 国产三级视频在线播放线观看| 国产精品入口麻豆电影| 在线国产一区二区三区| 1区不卡电影| 开心婷婷激情| 青青草在线播放| 在线看黄网址| 精品视频一二区| 国产成+人+亚洲+欧美+综合| 中文字幕久热在线精品| 超碰在线97国产| 日本一级理论片在线大全| 国产欧美日本亚洲精品一4区| 成人日韩欧美| 中中文字幕av在线| 国产视频中文字幕在线观看| 国产麻豆高清视频在线第一页| av首页在线| 在线看黄网址| 欧美日韩**字幕一区| www.99av| 欧洲亚洲精品视频| 牛牛精品视频在线| 麻豆精品不卡国产免费看| av在线第一页| 好男人社区在线视频| 国产精选在线观看| 午夜视频在线观看网站午夜视频在线| 黄色国产在线| 国产天堂资源| 精品伦理一区二区| www.中文字幕久久久| 欧洲一区av| 天堂在线免费av| 国产精品99999| 在线国产1区| 超碰在线中文| 国产精品免费91| 精品视频一二三| 男女羞羞视频在线观看| 国产一级黄色片免费| 在线国产小视频| 国产专区在线| 在线观看免费视频一区二区三区| 欧美日韩在线中文字幕| 日本中文字幕在线视频| 精品国产美女福利到在线不卡| 99久久99久久免费精品小说| 欧美日韩不卡中文字幕在线| 国产精品ⅴa有声小说| 日韩中文字幕久久久经典网| 国产亚洲精品久久久久久青梅 | 国产人成精品| 亚洲精品自产拍在线观看| 黄网在线免费| 精品视频三区| 中文字幕在线视频网| 日本高清中文字幕在线 | 中文字幕毛片| 久久久久久国产视频| 国产视频一二区| 国产在线你懂得| 在线一区二区三区精品| 天堂资源最新在线| www555久久| 伊人免费在线| 国产videos| 国产一级粉嫩xxxx| 天天操人人爽| 国产精品一区二三区| 久久国产综合视频| 国产在线一二| 国产美女在线免费观看| 免费观看一二区视频网站| 亚洲尤物在线视频| 国产色a在线观看| 尤物网在线观看| 国产视频在线播放| 国产免费专区| 国产免费福利| 最好看更新中文字幕| 国产美女在线播放| 国产永久免费高清在线观看| 国产美女视频一区二区三区| 国产在线观看a| 中文字幕在线观看日本| 国产美女在线播放| √天堂8资源中文在线| 天天操天天是| 国产激情三区| 精品一区二区在线欧美| 在线成人一区| 美女免费视频黄| 豆国产97在线|亚洲| 国产精品视频一区二区久久| 国产成人福利| av中文网站| 国产免费自拍视频| 91av福利| 九九免费视频| 精品视频二区三区| 免费看ww视频网站入口| 国产丝袜在线播放| 四虎中文字幕| 国产精品欧美韩国日本久久| 在线观看免费视频一区二区三区| www.三级.com| 国产三级做爰在线观看| www.色五月| 国产香蕉免费精品视频| www.大网伊人| 69精品视频| 国产在线二区| 亚洲午夜久久久久中文字幕| 中文字幕在线免费看| 日本成人a视频| 国产精品毛片一区二区三区四区| 亚洲一本大道| 国产高清自拍视频在线观看| 久久精品亚洲7777影院| 国产精品免费视频二三区| 黄色av电影在线播放| 在线播放国产区| 国产网站麻豆精品视频| 久草网在线视频| 在线三级中文| 国产精品视频一区二区免费不卡| 久久精品无码一区二区日韩av | 国产精品视频二区三区| 国产字幕在线看| 日本亚洲欧美| 亚洲第一区视频| 91xx在线观看| 国产激情在线观看| 国产福利免费观看| 国产色婷婷在线| 国产精品入口免费麻豆| 国产三区在线观看| 国产一级片麻豆| 国产精品伦一区二区三区视频| 国产免费专区| 国产在线更新| 国产一二三区在线观看| 国产日韩精品在线看| 国产精品理人伦一区二区三区| 日本中文字幕高清视频| 国产午夜在线视频| 国产午夜在线| 国产黄色一级片| 在线观看中文字幕的网站| 亚洲欧美综合乱码精品成人网| 一本大道五月香蕉| xxxx视频在线| 国产性色视频| 精精国产xxxx视频在线| av在线不卡免费| 欧美aaa一级片| 国产视频一二三区| 在线观看的av| 免费a级人成a大片在线观看| 国产亚洲精品拍拍拍拍拍| 中文产幕区在线观看| 在线看黄色av| 国产麻豆精品视频一区二区| 国产黄色网页| 免费在线看v| 国产天堂资源| www中文字幕在线观看| 国产黄色片大全| 国产原创av在线| 亚洲成人在线播放| 国产三区在线观看| 欧美精品一区二区三区免费|