XQuery 语言参考(数据库引擎)

Transact-SQL 支持用于查询 xml 数据类型的 XQuery 语言的子集。 此 XQuery 实现符合 2004 年 7 月的 XQuery 工作草案。 该语言正在由 World Wide Web 联合会 (W3C) 开发,所有主要数据库供应商和 Microsoft 也参与此开发。 由于 W3C 规范在成为 W3C 建议之前还可能进行修订,因此此实现可能与最终的建议有所不同。 本主题概要介绍了 SQL Server 中所支持的 XQuery 子集的语义和语法。

有关详细信息,请参阅 W3C XQuery 1.0 语言规范

XQuery 是一种可以查询结构化或半结构化 XML 数据的语言。 由于数据库引擎中提供 xml 数据类型支持,因此可以将文档存储在数据库中,然后使用 XQuery 进行查询。

XQuery 基于现有的 XPath 查询语言,并支持更好的迭代、更好的排序结果以及构造必需的 XML 的功能。 XQuery 在 XQuery 数据模型上运行。 此模型是 XML 文档以及可能为类型化也可能为非类型化的 XQuery 结果的抽象概念。 类型信息基于 W3C XML 架构语言所提供的类型。 如果没有可用的类型化信息,XQuery 将按照非类型化处理数据。 这与 XPath 1.0 版处理 XML 的方式相似。

若要查询 xml 类型的变量或列中存储的 XML 实例,可以使用 xml 数据类型方法。 例如,可以声明一个 xml 类型的变量,然后使用 xml 数据类型的 query() 方法来查询此变量。

DECLARE @x xml
SET @x = '<ROOT><a>111</a></ROOT>'
SELECT @x.query('/ROOT/a')

在下面的示例中,查询是针对 AdventureWorks 数据库中 ProductModel 表的 xml 类型的 Instructions 列指定的。

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

XQuery 包含命名空间声明(declare namespaceAWMI=...)和查询表达式(/AWMI:root/AWMI:Location[@LocationID=10])。

请注意,XQuery 是针对 xml 类型的 Instructions 列指定的。 XML 数据类型的 query() 方法用于指定 XQuery。

下表列出了有助于理解如何在 数据库引擎中实现 XQuery 的相关主题。

主题

说明

实现 SQL Server 中的 XML

介绍对数据库引擎中的 xml数据类型的支持以及可以对此数据类型使用的方法。xml 数据类型形成输入 XQuery 数据模型,XQuery 表达式在此模型上执行。

管理服务器上的 XML 架构集合

说明如何类型化数据库中存储的 XML 实例。 这意味着可以将 XML 架构集合与 xml 类型列相关联。 列中存储的所有实例根据集合中的架构进行验证和类型化,并为 XQuery 提供类型信息。

AdventureWorks2008R2 数据库中的 xml 数据类型表示形式

介绍 AdventureWorks2008R2 数据库中的 xml 类型列以及其中存储的实例。 大部分 XQuery 示例是针对 AdventureWorks2008R2 数据库以及其中包含的 xml 类型的列编写的。 了解 XML 实例有助于了解查询。

注意注意

本部分的组织结构基于 World Wide Web 联合会 (W3C) XQuery 工作草案规范。 本部分中的某些关系图是从该规范得到的。 本部分将 Microsoft XQuery 实现与 W3C 规范进行比较,介绍 Microsoft XQuery 与 W3C 的不同之处并指明不支持的 W3C 功能。 可以在 http://www.w3.org/TR/2004/WD-xquery-20040723 上查看到 W3C 规范。

本节涉及的主题

主题

说明

XQuery 基础知识

简要介绍了 XQuery 概念,以及表达式计算(静态和动态上下文)、原子化、有效的布尔值、XQuery 类型系统、序列类型匹配和错误处理。

XQuery 表达式

介绍 XQuery 主表达式、路径表达式、序列表达式、算术比较和逻辑表达式、XQuery 构造、FLWOR 表达式、条件和定量表达式以及序列类型的各种表达式。

模块和 Prolog (XQuery)

介绍 XQuery prolog。

针对 xml 数据类型的 XQuery 函数

介绍支持的一系列 XQuery 函数。

针对 xml 数据类型的 XQuery 运算符

介绍支持的 XQuery 运算符。

针对 xml 数据类型的其他示例 XQuery

提供附加的 XQuery 示例。