首页2免职电影 > 数据库 > DB2 > 正文

动用XQuery查问DB2 XML数据

2020-01-31 14:52:46
字体:
源泉:选登
供稿:新浪股吧网友评说
少女qq看的db2学科是:动用XQuery查问DB2 XML数据。

关于 XQuery
XQuery 在过多关键方面翻译都与 SQL 有所敌众我寡成语,这很大程度上是因为这两种语言是针对两种具有敌众我寡大数据的特征包括的数据模型而规划的。XML 文档管理暗含层次英语结构,并且有其原有的次序。而基于 SQL 的数据库管理板眼模板所支持的表格样式数据结构是平面的(flat)。并且是基于召集的;因此,行期间不存在次序。

这两种数据模型的敌众我寡导致它们各自的查问语言有过多水源的敌众我寡。XQuery 支持路径明码式,以允许程序员在 XML 的层次英语结构中导航,而纯 SQL(没有 XML 壮大)则不支持。XQuery 支持有类型的和无类型的数据,而 SQL 数据接连不断以点名类型概念的。XQuery 没有 null 值,因为 XML 文档管理会不在意短斤缺两的或没谱儿的数据。自然,SQL 动用 null 来示意短斤缺两的或没谱儿的数据值。XQuery 赶回一系列的 XML 数据,而 SQL 则赶回各族 SQL 数据类型的结果集。

这只是太爱你 XQuery 和 SQL 期间的水源敌众我寡点中的局部。提供一份细大不捐的列表压倒了本文的交强险赔偿范围。不过即将通告的 IBM Systems Journal 将更详细地讨论这些语言的敌众我寡。现在我们就探赜索隐一下 XQuery 语言的一些水源方面翻译,并看看何以动用它来查问 DB2 Viper 中的 XML 数据。

样本数据库

本文中的查问寻亲访友在 “DB2 Viper 急若流星入库”(developerWorks,2006 年 4 月)中创建的样本表。清单 1 给出了样本数据库中 “items” 和 “clients” 表的概念:

清单 1. 表概念



create table items (

id int primary key not null,

brandname varchar(30),

itemname varchar(30),

sku int,

srp decimal(7,2),

comments xml

)

create table clients(

id int primary key not null,

name varchar(50),

status varchar(10),

contactinfo xml

)

图 1 中显耀了 “items.comments” 列中暗含的样本 XML 数据,而 图 2 中则显耀了 “clients.contactinfo” 列中暗含的样本 XML 数据。之后的例子查问将选定这两个女人 XML 文档管理中的一个或两个女人中的一定物质。

图 1. 储存在 “items” 表的 “comments” 列中的样本 XML 文档管理



图 2. 储存在 “clients” 表的 “contactinfo” 列中的样本 XML 文档管理



查问环境

本文中的从头至尾查问都是通过互为点子发出的。这可以通过 DB2 传奇gm命令是多少行电子水水处理器或 DB2 Control Center 的 DB2 Command Editor 来完成。本文中的屏幕图象和说明书主要动用后一种点子。(DB2 Viper 还次要了一个基于 Eclipse 的 Developer Workbench,它可以受助程序员以图形化的点子构造查问。本文不讨论应用程序初始化失败开拓问题和 Developer Workbench。)

要动用 DB2 Command Editor,启动 Control Center,并增选 Tools -> Command Editor。这苹果7什么时候上市将迭出如 图 3 所示的哨口。在上面的面板中输入查问,单击左上角英文的绿色图片鼠标箭头图案载入运行该查问,后来可以在下面的面板中恐怕在 “Query Results” 选项卡中验证输出。

图 3. DB2 Command Editor,可以从 DB2 Control Center 中启动



XQuery 例子

与在 “用 SQL 查问 DB2 XML 数据” 中一样,本文将日趋讲授一些习以为常的sp增值业务许可证场景,并展示何以动用 XQuery 来满足对 XML 数据的请求。本文还探赜索隐了要求将 SQL 置于在 XQuery 中的更纷纭复杂的情景。

XQuery 提供了一些敌众我寡类型的明码式,这些明码式可以随意组合。每种明码式赶回一系列的值。这些值又可以一言一行另一个明码式的输入。最浮头儿的明码式的结果就是查问的结果。

本文主要讨论两种重中之重的 XQuery 明码式:“FLWOR” 明码式和路径明码式。FLWOR 明码式特有像 SQL 中的 SELECT-FROM-WHERE 明码式 ―― 它用来对由多项组成的一个列表进行迭代。并且可以增选赶回通过在每一项上进行准备得到的值。而路径明码式则可以在分层的 XML 物质期间进行导航,并赶回在路径末端找还的物质。

与 SQL 中的 SELECT-FROM-WHERE 明码式类似,XQuery FLWOR 明码式可以暗含数个以某个水源词作文开头的子句。在 FLWOR 明码式中,有偏下用来一言一行子句作文开头的volatile关键字:

  • for:对输入序列进行迭代。依次将一个含氧量绑定到每种输入项
  • let:宣传单一个含氧量并为之赋值,可能性是一个暗含多项的列表
  • where:点名过滤查问结果的标准
  • order by:点名结果的排序次序
  • return:概念所赶回的结果
XQuery 中的路径明码式由一系列的 “步(step)” 组成,期间以乘号道岔。在最有数的形式中,每一步在 XML 层次英语中向下导航,以发觉由前一步赶回的物质的孩子。路径明码式中的每一步还可以暗含一个体词谓词形。用来过滤该步赶回的物质。只保留满足那种条件的物质。虚设含氧量 $clients 被绑定到暗含 <Client> 物质的 XML 文档管理的一个列表,则 4 步路径明码式 $clients/Client/Address[state = "CA"]/zip 将赶回存身在诺曼底的客户的邮编。

在过多情况下,可以任意动用 FLWOR 明码式或路径明码式编写查问。

动用 DB2 XQuery 一言一行顶层查问语言

要在 DB2 Viper 中第一手执行 XQuery(而不是将它置于在 SQL 语句中)。不能不以volatile关键字 xquery 一言一行查问的作文开头。以此volatile关键字将训话 DB2 租用它的 XQuery 分析器来处理请求。单单在动用 XQuery 一言一行最外层(顶层)语言的苹果7什么时候上市才要求如此做。如果是将 XQuery 明码式置于在 SQL 中。则不要求在语句有言在先添加 xquery volatile关键字。但是,本文动用 XQuery 一言一行水源语言。因此从头至尾查问有言在先都添加 xquery。

当 XQuery 被一言一行顶层语言时,它要求一个输入数据的源。XQuery 获得输入数据的一种点子是租用一个名为 db2-fn:xmlcolumn 的函数,租用时带一个参数,申说 DB2 表中 XML 列户口所在地哪样填的表名和该列的列名。db2-fn:xmlcolumn 函数赶回储存在加以列中的一系列的 XML 文档管理。下面的查问赶回一系列暗含客户中央巡视组联系点子汇通财经网原油信息的 XML 文档管理:

清单 2. 赶回客户中央巡视组联系点子数据的有数 XQuery



x

[1] [2] [3] [4] [5] 下一篇

通告评说 公有条评说
户名: 明码:
验证码: 隐姓埋名通告

图片精选

Baidu