XQuery 言語リファレンス (データベース エンジン)

Transact-SQL では、xml データ型のクエリに使用する XQuery 言語のサブセットがサポートされています。この実装は、2004 年 7 月に公開された XQuery のワーキング ドラフトに従っています。この言語は W3C (World Wide Web Consortium) によって開発が進められており、マイクロソフトをはじめとする主要なすべてのデータベース ベンダが参加しています。W3C 仕様は W3C 勧告になる前に改訂されることがあるので、この実装は最終的な勧告とは異なる可能性があります。このトピックでは、SQL Server でサポートされる XQuery サブセットのセマンティクスと構文について概説します。

詳細については、「W3C XQuery 1.0 Language Specification」を参照してください。

XQuery は構造化または半構造化された XML データに対するクエリ実行できる言語です。データベース エンジンでは xml データ型がサポートされているので、ドキュメントをデータベースに格納し、XQuery を使用してクエリを実行することができます。

XQuery は既存の XPath クエリ言語に基づいており、優れた反復処理や結果の並べ替え、必要な XML を構築する機能を実現するためのサポートが追加されています。XQuery は XQuery データ モデルで動作します。これは XML ドキュメントおよび XQuery の結果を抽象化したモデルで、XQuery の結果は型指定することも、型指定しないこともできます。型情報は W3C XML Schema 言語によって提供される型に基づきます。型指定情報を使用できない場合は、XQuery によりデータが型指定されていないものとして処理されます。この処理方法は、XPath Version 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] が含まれています。

xml 型の Instructions 列に対して XQuery を指定していることに注意してください。XQuery を指定するために、xml データ型の query() メソッドが使用されます。

次の表は、データベース エンジンでの XQuery の実装を理解する際に役立つ関連トピックを示しています。

トピック

説明

SQL Server での XML の実装

データベース エンジンでの xmlデータ型のサポート、およびこのデータ型に対して使用できるメソッドについて説明します。xml データ型により、XQuery 式が実行される XQuery 入力データ モデルが作成されます。

サーバー上の XML スキーマ コレクションの管理

データベースに格納されている XML インスタンスを型指定する方法について説明します。つまり、XML スキーマ コレクションと xml 型の列を関連付けることができます。この列に格納されているすべてのインスタンスは、コレクションのスキーマに対して検証と型指定が行われます。また、これらのインスタンスにより、XQuery の型情報が提供されます。

AdventureWorks2008R2 データベースの xml データ型表現

AdventureWorks2008R2 データベースの xml 型の列およびその列に格納されているインスタンスについて説明します。ほとんどの XQuery サンプルは、AdventureWorks2008R2 データベースおよびこのデータベースに含まれている xml 型の列に対して記述されています。XML インスタンスについて理解することは、クエリを理解するのに役立ちます。

注意

このセクションの構成は、W3C (World Wide Web Consortium) XQuery ワーキング ドラフト仕様に基づいています。このセクションで提供する図の一部は、その仕様から引用したものです。ここでは、Microsoft XQuery の実装と W3C 仕様を比較し、Microsoft XQuery と W3C がどのように異なるかを説明し、サポートしていない W3C 機能を示します。W3C の仕様は http://www.w3.org/TR/2004/WD-xquery-20040723 から入手できます。

このセクションの内容

トピック

説明

XQuery の基礎

XQuery の概念の基本的な概要について説明し、式の評価 (静的コンテキストと動的コンテキスト)、アトミック化、有効なブール値、XQuery 型システム、シーケンス型の照合、およびエラー処理についても説明します。

XQuery 式

XQuery 原始式、パス式、シーケンス式、算術式、比較式、論理式、XQuery の構築、FLWOR 式、条件式、量化式、およびシーケンス型のさまざまな式について説明します。

モジュールとプロローグ (XQuery)

XQuery プロローグについて説明します。

xml データ型に対する XQuery 関数

サポートされている XQuery 関数の一覧について説明します。

xml データ型に対する XQuery の演算子

サポートされている XQuery 演算子について説明します。

xml データ型に対する XQuery のその他のサンプル

XQuery の追加サンプルを提供します。