使用 XQuery 查询 DB2 XML 数据
2009-11-11 00:00:00 来源:WEB开发网您可能已经听说过 DB2 Viper 的新架构,这种架构支持表格和分层数据结构。实际上,前一篇文章已经总结了 DB2 中新的 XML 特性,描述了如何创建数据库对象和用 XML 数据填充这些数据库对象,并解释了如何使用 SQL 和 SQL/XML 操作 XML 数据。本文继续探索 DB2 XML 功能,这一次将焦点放在 DB2 对 XQuery 的新的支持上。
DB2 将 XQuery 当作最好的语言,允许用户直接编写 XQuery 表达式,而不是将 XQueries 封装或嵌入到 SQL 语句中。而且,DB2 的查询引擎是在本地处理 XQueries,这意味着它在解析、计算和优化 XQueries 之前不必在幕后将它们翻译成 SQL。当然,如果您选择编写同时包括 XQuery 和 SQL 表达式的 “双语(bilingual)” 查询,那么 DB2 同样会处理和优化这些查询。
与 “用 SQL 查询 DB2 XML 数据” 中对 SQL/XML 的描述一样,本文也提到了一些常见的查询任务,并告诉您如何使用 XQuery 来完成这些目标。不过首先我们还是简要地考虑一下 XQuery 与 SQL 的不同之处。
关于 XQuery
XQuery 在很多关键方面都与 SQL 有所不同,这很大程度上是因为这两种语言是针对两种具有不同特征的数据模型而设计的。XML 文档包含层次结构,并且有其固有的顺序。而基于 SQL 的数据库管理系统所支持的表格数据结构是平面的(flat),并且是基于集合的;因此,行之间不存在顺序。
这两种数据模型的不同导致它们各自的查询语言有很多基本的不同。例如,XQuery 支持路径表达式,以允许程序员在 XML 的层次结构中导航,而纯 SQL(没有 XML 扩展)则不支持。XQuery 支持有类型的和无类型的数据,而 SQL 数据总是以指定类型定义的。XQuery 没有 null 值,因为 XML 文档会忽略缺失的或未知的数据。当然,SQL 使用 null 来表示缺失的或未知的数据值。XQuery 返回一系列的 XML 数据,而 SQL 则返回各种 SQL 数据类型的结果集。
更多精彩
赞助商链接