WEB开发网
开发学院数据库DB2 DB2 9:XML数据和关系数据相互转化 阅读

DB2 9:XML数据和关系数据相互转化

 2007-11-01 22:18:47 来源:WEB开发网   
核心提示: 推介网络内容 :http://www.vlan9.com 从xml(标准化越来越近了)数据产生表格来产生关系数据 在上述给出的实例中,我们可能有这样的需求,DB2 9:XML数据和关系数据相互转化(2),查询客户的姓名,年龄和传真,在语句中调用 xml(标准化越来越近了)Table 函数,并以此作为视图定义的基础

推介网络内容 :http://www.vlan9.com


   从xml(标准化越来越近了)数据产生表格来产生关系数据
   在上述给出的实例中,我们可能有这样的需求,查询客户的姓名,年龄和传真。这里姓名和年龄是关系数据,而传真是存储在xml(标准化越来越近了)字段中的,属于xml(标准化越来越近了)数据。虽然我们通过SQL/xml(标准化越来越近了)能够来完成。但是如果频繁的进行类似的查询,可能会显得不是很方便。我们可以通过创建视图来建一张关系数据表,即形成我们按照纯关系数据库来建立的客户表。其形式可能为:

DB2 9:xml(标准化越来越近了)数据和关系数据相互转化(图二)

  • VC++中利用MSxml(标准化越来越近了)解析xml(标准化越来越近了)文档
  • Java解析xml(标准化越来越近了)文档——dom解析xml(标准化越来越近了)
  • 一个通过DataSet操作xml(标准化越来越近了)的类
  • 一个读取xml(标准化越来越近了)文件内容的类
  • xml(标准化越来越近了)简介
  • xml(标准化越来越近了)入门之11问答(1)
  • 通过xml(标准化越来越近了)签名和加密更安全地交换数据
  • SAX解析xml(标准化越来越近了)
  • xml(标准化越来越近了) 语法简介
  • 解决xml(标准化越来越近了)中文问题


   这里,实际上我们就是要检索多个 xml(标准化越来越近了) 元素并将每个元素转换成传统的 SQL 数据类型。 

   为了实现这样的形式,我们可以使用SQL/xml(标准化越来越近了)语句来实现。
select i.NAME, i.AGE,t.fax,t.email from CUSTOMERS i  ,xml(标准化越来越近了)table('$c/Customer' passing i.CONTACTINFO as "c"columns fax varchar(100) path 'fax',    email varchar(100) path 'email'      ) as twhere NAME='Smith'
   第一行指定将包含在结果集中的列。查询中后面的几行表明,用引号括起来、并且以变量 "t" 为前缀的列是基于 xml(标准化越来越近了) 元素值的列。第二行调用 xml(标准化越来越近了)Table 函数指定包含目标数据("i.fax")的 DB2 xml(标准化越来越近了) 列和在该列的 xml(标准化越来越近了) 文档中的路径,通过该路径可以定位感兴趣的元素(在根元素 "Customer" 的子元素 "Customer" 中)。第 3 到 5 行的 "columns" 子句标识出将被映射到第一行指定的 SQL 结果集中的输出列的特定 xml(标准化越来越近了) 元素。这个映射需要指定 xml(标准化越来越近了) 元素值将被转换成的数据类型。在这个例子中,所有 xml(标准化越来越近了) 数据被转换成传统的 SQL 数据类型。 

   下图展示了运行该查询得到的示例结果。可以看到,输出是一个简单的 SQL 结果集。注意,列名已经被变成大写形式 —— 这在 SQL 中是很常见的。

DB2 9:xml(标准化越来越近了)数据和关系数据相互转化(图三)


   SQL/xml(标准化越来越近了) 函数可用于定义视图。如果要为 SQL 应用程序的程序员提供本地 xml(标准化越来越近了) 数据的关系模型,那么这种功能特别有用。 
   为 xml(标准化越来越近了) 列中的数据创建关系视图并不比投影 xml(标准化越来越近了) 元素值复杂多少。您只需编写一个 SQL/xml(标准化越来越近了) SELECT 语句,在语句中调用 xml(标准化越来越近了)Table 函数,并以此作为视图定义的基础。然后我们在通过创建视图来产生关系数据表:
Create view CustomerView(Name, Age, Fax, Email) asselect i.NAME, i.AGE,t.fax,t.email from CUSTOMERS i  ,xml(标准化越来越近了)table('$c/Customer' passing i.CONTACTINFO as "c"columns fax varchar(100) path 'fax',    email varchar(100) path 'email'      ) as twhere NAME='Smith'
   这样就产生了CustomerView视图

DB2 9:xml(标准化越来越近了)数据和关系数据相互转化(图四)

点击查看大图


   接下来,我们就可以像操作关系数据表那样来操作CustomerView进行各种查询操作

Tags:DB XML 数据

编辑录入:coldstar [复制链接] [打 印]
赞助商链接