XQuery-Sprachreferenz (Datenbankmodul)

Transact-SQL unterstützt eine Teilmenge der XQuery-Sprache, die zum Abfragen des xml-Datentyps verwendet wird. Diese XQuery-Implementierung orientiert sich am Arbeitsentwurf für XQuery (Juli 2004). Diese Sprache wird zurzeit vom W3C (World Wide Web Consortium) unter Mitwirkung aller großen Datenbankhersteller und Microsoft entwickelt. Da die W3C-Spezifikationen möglicherweise überarbeitet werden, bevor eine W3C-Empfehlung ausgesprochen wird, kann sich diese Implementierung von der endgültigen Empfehlung unterscheiden. Dieses Thema beschreibt die Semantik und Syntax der Teilmenge von XQuery, die in SQL Server unterstützt wird.

Weitere Informationen bietet die W3C XQuery 1.0-Sprachspezifikation.

XQuery ist eine Sprache, die strukturierte oder halbstrukturierte XML-Daten abfragen kann. Durch die Unterstützung für den xml-Datentyp, die in Database Engine (Datenbankmodul) bereitgestellt wird, können Dokumente in einer Datenbank gespeichert und dann mithilfe von XQuery abgefragt werden.

XQuery basiert auf der vorhandenen XPath-Abfragesprache. Dieser wurde Unterstützung für bessere Iteration, bessere Sortierergebnisse und eine Funktion zum Erstellen des erforderlichen XML hinzugefügt. XQuery wird auf der Grundlage des XQuery-Datenmodells ausgeführt. Dabei handelt es sich um eine Abstraktion von XML-Dokumenten und die XQuery-Ergebnisse, die typisiert oder nicht typisiert sein können. Die Typinformationen basieren auf den von der W3C XML-Schemasprache bereitgestellten Typen. Wenn keine Typisierungsinformationen verfügbar sind, behandelt XQuery die Daten so, als wären sie nicht typisiert. XPath, Version 1.0, verarbeitet XML auf ähnliche Weise.

Um eine XML-Instanz abzufragen, die in einer Variablen oder Spalte vom Typ xml gespeichert ist, verwenden Sie die xml-Datentypmethoden. Sie deklarieren z. B. eine Variable vom Typ xml und fragen diese dann mithilfe der query()-Methode des xml-Datentyps ab.

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

Im folgenden Beispiel wird die Abfrage für die Instructions-Spalte vom Typ xml in der ProductModel-Tabelle in der AdventureWorks-Datenbank angegeben.

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

Die XQuery umfasst die Namespacedeklaration (declare namespaceAWMI=...) und den Abfrageausdruck (/AWMI:root/AWMI:Location[@LocationID=10]).

Beachten Sie, dass die XQuery für die Instructions-Spalte vom Typ xml angegeben wird. Die query()-Methode des xml-Datentyps wird zum Angeben der XQuery verwendet.

Die folgende Tabelle enthält die verwandten Themen, die das Verständnis der Implementierung von XQuery in Database Engine (Datenbankmodul) vertiefen sollen.

Thema

Beschreibung

Implementieren von XML in SQL Server

Erläutert die Unterstützung für den xml-Datentyp in Database Engine (Datenbankmodul) und die Methoden, die für diesen Datentyp verwendet werden können.Der xml-Datentyp bildet das XQuery-Eingabedatenmodell, für das die XQuery-Ausdrücke ausgeführt werden.

Verwalten von XML-Schemaauflistungen auf dem Server

Beschreibt, wie die in einer Datenbank gespeicherten XML-Instanzen typisiert werden können. Dies bedeutet, dass Sie der Spalte vom Typ xml eine XML-Schemaauflistung zuordnen können. Alle in der Spalte gespeicherten Instanzen werden in der Auflistung anhand des Schemas überprüft und typisiert und stellen die Typinformationen für XQuery bereit.

Darstellung des xml-Datentyps in der AdventureWorks-Datenbank

Erläutert die Spalte vom Typ xml sowie die darin gespeicherten Instanzen in der AdventureWorks-Datenbank. Die meisten XQuery-Beispiele wurden anhand der AdventureWorks-Datenbank und der darin enthaltenen Spalten vom Typ xml geschrieben. Kenntnisse der XML-Instanzen können dazu beitragen, dass Sie die Abfragen verstehen.

HinweisHinweis

Die Organisation dieses Abschnitts basiert auf der Arbeitsentwurfspezifikation für XQuery des World Wide Web Consortium (W3C). Einige der in diesem Abschnitt bereitgestellten Diagramme stammen aus dieser Spezifikation. In diesem Abschnitt wird die Microsoft XQuery-Implementierung mit der W3C-Spezifikation verglichen, es werden die Unterschiede zwischen XQuery und W3C beschrieben und die nicht unterstützten W3C-Features genannt. Die W3C-Spezifikation ist unter http://www.w3.org/TR/2004/WD-xquery-20040723 verfügbar.

In diesem Abschnitt

Thema

Beschreibung

XQuery-Grundlagen

Stellt eine grundlegende Übersicht über die XQuery-Konzepte und die Auswertung von Ausdrücken (statischer und dynamischer Kontext), die Atomarmachung, effektive boolesche Werte, das XQuery-Typsystem, Sequenztypzuordnung und Fehlerbehandlung zur Verfügung.

XQuery-Ausdrücke

Beschreibt primäre XQuery-Ausdrücke, path-Ausdrücke, sequence-Ausdrücke, arithmetische Vergleiche und logische Ausdrücke, die XQuery-Erstellung, FLWOR-Ausdrücke, bedingte und quantifizierte Ausdrücke sowie verschiedene Ausdrücke für Sequenztypen.

Module und Prologe (XQuery)

Beschreibt den XQuery-Prolog.

XQuery-Funktionen für den xml-Datentyp

Beschreibt eine Liste der unterstützten XQuery-Funktionen.

XQuery-Operatoren für den xml-Datentyp

Beschreibt unterstützte XQuery-Operatoren.

Zusätzliches Beispiel für XQuery-Abfragen für den XML-Datentyp

Stellt zusätzliche XQuery-Beispiele bereit.