数据库运用XML操作

简介:
None.gif 1. xml index
None.gif
None.gif alter table orders
None.gif add constraint pk_orders_orderid
None.gif primary key clustered(orderid)
None.gif
None.gif create primary xml index xidx_details on orders(details)
None.gif
None.gif create xml index xidx_details_path on orders(details) using xml index xidx_details for path
None.gif
None.gif create xml index xidx_details_property on orders(details) using xml index xidx_details for property
None.gif
None.gif create xml index xidx_details_value on orders(details) using xml index xidx_details for value
None.gif
None.gif
None.gif 2. Demo XML表达式查询
None.gif
None.gif declare @mydoc xml
None.gif set @mydoc = '
None.gif<AAA>
None.gif <BBB/>
None.gif <BBB/>
None.gif <CCC>
None.gif <DDD/>
None.gif <BBB>
None.gif <EEE/>
None.gif </BBB>
None.gif </CCC>
None.gif</AAA>
None.gif
'
None.gif select @mydoc.query( ' //BBB ')
None.gif select @mydoc.query( ' //BBB[1] ')
None.gif select @mydoc.query( ' /AAA/BBB[1] ')
None.gif select @mydoc.query( ' /AAA/BBB[last()] ')
None.gif
None.gif declare @mydoc xml
None.gif set @mydoc = '
None.gif<AAA>
None.gif <BBB ID="1"/>
None.gif <BBB ID="2"/>
None.gif <CCC>
None.gif <DDD/>
None.gif <BBB ID="3">
None.gif <EEE/>
None.gif </BBB>
None.gif </CCC>
None.gif</AAA>
None.gif
'
None.gif select @mydoc.query( ' /AAA/BBB[@ID="1"] ')
None.gif
None.gif
None.gif select @myDoc.query( ' /bookstore/book/title ')
None.gif
None.gif查询条件可以是attribute, 也可以是element,如下是element示例
None.gif select @myDoc.query( ' /bookstore/book[price>30] ')
None.gif
None.gif 3. FLOWER
None.gif
None.gif declare @myDoc xml
None.gif set @myDoc = '
None.gif<AAA>
None.gif <BBB ID=" 1" />
None.gif <BBB ID="1" />
None.gif <BBB NAME="NAME1"/>
None.gif <CCC ID="1">
None.gif <DDD/>
None.gif <BBB>
None.gif <EEE ID="1"/>
None.gif </BBB>
None.gif <BBB/>
None.gif </CCC>
None.gif</AAA>
None.gif
'
None.gif select @myDoc.query( '
None.giffor $id in /AAA/BBB
None.gifreturn $id
')
None.gif
None.gif declare @myDoc xml
None.gif set @myDoc = '
None.gif<AAA>
None.gif <BBB>HELLO</BBB>
None.gif <BBB>Welcome</BBB>
None.gif <BBB NAME="NAME1"/>
None.gif <CCC ID="1">
None.gif <DDD/>
None.gif <BBB>OK
None.gif <EEE ID="1"/>
None.gif </BBB>
None.gif <BBB/>
None.gif </CCC>
None.gif</AAA>
None.gif
'
None.gif select @myDoc.query( '
None.giffor $id in //BBB
None.gifreturn <result>{data($id)}</result>
')
None.gif
None.gif
None.gif declare @myDoc xml
None.gif set @myDoc = '
None.gif<bookstore>
None.gif <book category="COOKING">
None.gif <title>Everyday</title>
None.gif <author>Giade De</author>
None.gif <price>30.00</price>
None.gif </book>
None.gif <book category="COMPUTER">
None.gif <title>Windows 2003</title>
None.gif <author>Mike</author>
None.gif <price>50.00</price>
None.gif </book>
None.gif <book category="SOFTWARE">
None.gif <title>VS.NET2003</title>
None.gif <author>Mike</author>
None.gif <price>90.00</price>
None.gif </book>
None.gif</bookstore>
None.gif
'
None.gif select @myDoc.query( ' /bookstore/book/title ')
None.gif -- ---------------------------
None.gif
select @myDoc.query( ' /bookstore/book[price>30] ')
None.gif
None.gif
None.gif select @myDoc.query( ' for $x in /bookstore/book
None.gifwhere $x/price>30
None.gifreturn $x/title
')
None.gif
None.gif select @myDoc.query( ' for $x in /bookstore/book/title
None.giforder by $x
None.gifreturn $x
')
None.gif
None.gif select @myDoc.query( ' for $x in /bookstore/book/title
None.gifreturn <li>{data($x)}</li>
')
None.gif
None.gif select @myDoc.query( ' for $x in /bookstore/book/title
None.giforder by $x
None.gifreturn <li>{data($x)}</li>
')
None.gif
None.gifvalue查询
None.gif declare @myDoc xml
None.gif set @myDoc = '
None.gif<bookstore>
None.gif <book category="COOKING" id="1" >
None.gif <title>Everyday</title>
None.gif <author>Giade De</author>
None.gif <price>30.00</price>
None.gif </book>
None.gif <book category="COMPUTER" id="2" >
None.gif <title>Windows 2003</title>
None.gif <author>Mike</author>
None.gif <price>50.00</price>
None.gif </book>
None.gif <book category="SOFTWARE" id="3" >
None.gif <title>VS.NET2003</title>
None.gif <author>Mike</author>
None.gif <price>90.00</price>
None.gif </book>
None.gif</bookstore>
None.gif
'
None.gif select @myDoc.value( ' (/bookstore/book/@id)[1] ', ' int ')
None.gif
None.gifexist查询
None.gif select @myDoc.exist( ' /bookstore/book/title="VS.NET2003" ')
None.gif
None.gif
None.gif select @myDoc.exist( ' /bookstore/book[@id=1] ')
None.gif
None.gif结果集中绑定表中列
None.gif select orderid, ' L01 ' as ProductID,Customer,
None.gifDetails.query( '
None.gif<OrderDetails>
None.gif<Customer>{sql:column("Customer")}</Customer>
None.gif {
None.gif for $x in //row
None.gif return $x
None.gif}
None.gif</OrderDetails>
None.gif
')
None.gif from orders
None.gif
None.gif 4.修改XML
None.gif INSERT
None.gif declare @doc xml
None.gif set @doc = ' <Products></Products> '
None.gif
None.gif set @doc.modify(
None.gif ' insert (<Product><ID>L01</ID><Name>LL01</Name></Product>)
None.gifinto (/Products)[1]
')
None.gif
None.gif set @doc.modify(
None.gif ' insert (<Product><ID>L02</ID><Name>LL02</Name></Product>)
None.gifas first into (/Products)[1]
')
None.gif
None.gif set @doc.modify(
None.gif ' insert (<Product><ID>L03</ID><Name>LL03</Name></Product>)
None.gifas last into (/Products)[1]
')
None.gif
None.gif set @doc.modify(
None.gif ' insert attribute Price {"20.50"} into (/Products/Product)[1] ')
None.gif
None.gif select @doc
None.gif -- ----------------------------------------
None.gif
DELETE
None.gif declare @myDoc xml
None.gif set @myDoc = '
None.gif<bookstore>
None.gif <book category="COOKING" id="1" >
None.gif <title>Everyday</title>
None.gif <author>Giade De</author>
None.gif <price>30.00</price>
None.gif </book>
None.gif <book category="COMPUTER" id="2" >
None.gif <title>Windows 2003</title>
None.gif <author>Mike</author>
None.gif <price>50.00</price>
None.gif </book>
None.gif <book category="SOFTWARE" id="3" >
None.gif <title>VS.NET2003</title>
None.gif <author>Mike</author>
None.gif <price>90.00</price>
None.gif </book>
None.gif</bookstore>
None.gif
'
None.gif set @mydoc.modify( ' delete (/bookstore/book[@id="1"]) ')
None.gif
None.gif -- ------------------------------------
None.gif

None.gif set @mydoc.modify( ' delete (/bookstore/book[@id="1"])[1] ')
None.gif
None.gif -- --------------------------------------
None.gif

None.gif set @mydoc.modify( ' delete (/bookstore/book/price)[1] ')
None.gif -- --------------------------
None.gif

None.gif set @mydoc.modify( ' delete (/bookstore/book/price/text())[1] ')
None.gif -- ---------------------------
None.gif
REPLACE
None.gif update text:
None.gif
None.gif set @mydoc.modify( ' replace value of (/bookstore/book/price/text())[1] with "99.50" ')
None.gif
None.gif update attribute:
None.gif
None.gif set @mydoc.modify( ' replace value of (/bookstore/book/@id)[1] with "10" ')
None.gif -- ----------
None.gif
set @mydoc.modify( '
None.gifreplace value of (/bookstore/book/@id)[1]
None.gifwith(
None.gifif(/bookstore/book[@id="1"]) then
None.gif "10"
None.gifelse
None.gif "100"
None.gif)
None.gif
')



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/24/260707.html,如需转载请自行联系原作者
相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
18 0
|
1月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
1月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
1月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL| 数据库的管理和操作【操作数据库和操作表】【附练习】
MySQL | 数据库的基本操作和表的基本操作【附练习】
|
3月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
3月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)
|
16天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
1月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
72 0
|
1月前
|
缓存 NoSQL 数据库
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
[Redis]——数据一致性,先操作数据库,还是先更新缓存?