SQL Server 2008中有關(guān)XML的新功能(4)_Mssql數(shù)據(jù)庫教程
推薦:在SQL Server實例之間傳輸?shù)卿浐兔艽a概要 在將數(shù)據(jù)庫移動到新服務(wù)器后,用戶可能無法登錄到新服務(wù)器。相反,他們會收到下面的錯誤消息: Msg 18456, Level 16, State 1 Login failed for user '%ls'. 您必須將登錄和密碼傳
3.3 Union和List類型
你可以使用XML schema 將你的XML數(shù)據(jù)的數(shù)據(jù)類型定義為允許將一個有限集合的值賦給具有多個值的元素和屬性。例如,你可能定義一個sizeListType類型,它使產(chǎn)品定義中的一個AvaliableSizes元素的賦值限制為S、M和L。SQL Server 2005支持XML schema包含這些簡單的類型定義和限制。例如,你可以使用一個list類型來定義一個產(chǎn)品的有效的型號,如下面的示例所示:
| <xs:simpleType name="sizeListType"> <xs:list> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="S"/> <xs:enumeration value="M"/> <xs:enumeration value="L"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> |
這個schema 聲明使你可以創(chuàng)建一個列出所有型號的元素,其中產(chǎn)品可以按照被空格分開的一組值來購買,如下面的示例所示:
<AvailableSizes>S M L</AvailableSizes>
然而,如果你想支持兩種不同的方式來表達一個產(chǎn)品的型號呢?例如,假設(shè)一個自行車產(chǎn)品零售商賣具有大、中、小型號的騎自行車穿的衣服,但是還想按照衣服尺寸來賣(例如18、20、22和24)?為了使你能夠這樣做,SQL Server 2008增加了對包含list類型的union類型的支持,你可以使用它將多個類型定義和限制合并到一個單獨的類型中去。例如,下面的Transact-SQL代碼創(chuàng)建了一個XML schema集合,它定義了一個productSizeType類型,其中有效值包括一組數(shù)字型號(18、20、22和24)和一組名稱型號(S、M和L)。
| CREATE XML SCHEMA COLLECTION CatalogSizeSchema AS N'<?xml version="1.0" encoding="UTF-16"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="productSizeType"> <xs:union> <xs:simpleType> <xs:list> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:enumeration value="18"/> <xs:enumeration value="20"/> <xs:enumeration value="22"/> <xs:enumeration value="24"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> <xs:simpleType> <xs:list> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="S"/> <xs:enumeration value="M"/> <xs:enumeration value="L"/> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> </xs:union> </xs:simpleType></xs:schema>' |
有了schema中的這個聲明,任何基于productSizeType 的元素都可以包含任何種類的列表;所以下面示例中的兩種產(chǎn)品元素都是productSizeType數(shù)據(jù)類型的有效的實例。
| <Catalog> <Product> <ProductName>Road Bike</ProductName> <AvailableSizes>22 24</AvailableSizes> </Product> <Product> <ProductName>Cycling Jersey</ProductName> <AvailableSizes>S M L</AvailableSizes> </Product> </Catalog> |
類似的,SQL Server 2008支持對包含union 類型的list 類型的schema 聲明。
4 增強了XQuery
SQL Server 2005推出了xml 數(shù)據(jù)類型,它提供了一些你可以使用的方法來對存儲在一個列或變量中的XML數(shù)據(jù)進行操作。你可以執(zhí)行的大多數(shù)操作都使用XQuery語法來操縱和使用XML數(shù)據(jù)。SQL Server 2005所支持的XQuery 語法包括被稱作FLWOR 表達式的for、where、order by和return 條件子句,你可以使用它來循環(huán)迭代一個XML文檔的節(jié)點和返回結(jié)果值。
SQL Server 2008增加了對let條件子句的支持,它是用來在XQuery表達式中對變量進行賦值的,例如下面的示例:
| declare @x xml set @x= '<Invoices> <Invoice> <Customer>Kim Abercrombie</Customer> <Items> <Item ProductID="2" Price="1.99" Quantity="1" /> <Item ProductID="3" Price="2.99" Quantity="2" /> <Item ProductID="5" Price="1.99" Quantity="1" /> </Items> </Invoice> <Invoice> <Customer>Margaret Smith</Customer> <Items> <Item ProductID="2" Price="1.99" Quantity="1"/> </Items> </Invoice> </Invoices>' SELECT @x.query( '<Orders> { for $invoice in /Invoices/Invoice let $count :=count($invoice/Items/Item) order by $count return <Order> {$invoice/Customer} <ItemCount>{$count}</ItemCount> </Order> } </Orders>') |
這個例子返回下面的XML:
| <Orders> <Order> <Customer>Margaret Smith</Customer> <ItemCount>1</ItemCount> </Order> <Order> <Customer>Kim Abercrombie</Customer> <ItemCount>3</ItemCount> </Order> </Orders> |
要注意SQL Server 2008不允許對構(gòu)造元素賦值。
分享:也談如何縮小SQL SERVER日志文件前幾天也碰到日志文件過大的問題,數(shù)據(jù)庫實際大小為600M, 日志文件實際大小為33M, 但日志文件占用空間為2.8G! 試了多種方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都沒辦法將文件縮小。無論
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
猜你也喜歡看這些
- 網(wǎng)站模板:以數(shù)據(jù)庫字段分組顯示數(shù)據(jù)的sql語句
- 10大關(guān)系數(shù)據(jù)庫SQL注入工具一覽
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- linux Xtrabackup安裝及使用方法
- MySQL筆記之?dāng)?shù)學(xué)函數(shù)詳解
- Windows環(huán)境下重置mysql密碼操作命令
- mysql使用source 命令亂碼問題解決方法
- mysql常用監(jiān)控腳本命令整理
- MySQL和Access的區(qū)別
- MYSQL 批量替換之replace語法的使用詳解
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-SQL Server 2008中有關(guān)XML的新功能(4)
。