Referencia de lenguaje XQuery (motor de base de datos)

Transact-SQL admite un subconjunto del lenguaje XQuery que se utiliza para realizar consultas del tipo de datos xml. Esta implementación de XQuery se basa en el borrador de trabajo de XQuery de julio de 2004. El lenguaje está siendo desarrollado por el World Wide Web Consortium (W3C), con la participación de los principales proveedores de bases de datos, incluido Microsoft. Dado que las especificaciones del W3C pueden someterse a futuras revisiones antes de convertirse en recomendaciones del W3C, esta implementación puede ser distinta de la recomendación final. En este tema se define de forma general la semántica y la sintaxis del subconjunto de XQuery admitido en SQL Server.

Para obtener más información, vea las especificaciones del lenguaje W3C XQuery 1.0.

XQuery es un lenguaje que permite realizar consultas en datos XML estructurados o semiestructurados. Gracias a la compatibilidad con el tipo de datos xml del Database Engine (Motor de base de datos), los documentos se pueden almacenar en una base de datos para después consultarse mediante XQuery.

XQuery se basa en el lenguaje para consultas XPath existente, con un incremento de la compatibilidad para lograr una mejor iteración, mejores resultados de la ordenación y la posibilidad de generar el XML necesario. XQuery opera según el modelo de datos XQuery. Se trata de una abstracción de documentos XML, y los resultados de XQuery pueden tener tipo o no tenerlo. La información del tipo se basa en los tipos proporcionados por el lenguaje para esquemas XML del W3C. Si no se dispone de información de tipos, XQuery trata los datos como sin tipo. Esto es similar al modo en que XPath versión 1.0 trata el XML.

Para realizar una consulta en una instancia XML almacenada en una variable o columna de tipo xml, utilice los métodos del tipo de datos xml. Por ejemplo, puede declarar una variable de tipo xml y consultarla mediante el método query() del tipo de datos xml.

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

En el siguiente ejemplo, la consulta se especifica en la columna de tipo xml Instructions de la tabla ProductModel de la base de datos AdventureWorks.

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

La consulta XQuery incluye la declaración de espacio de nombres, declare namespaceAWMI=..., y la expresión de la consulta, /AWMI:root/AWMI:Location[@LocationID=10].

Observe que la consulta XQuery se especifica para la columna de tipo xml Instructions. Se utiliza el método método query() del tipo de datos xml para especificar la consulta XQuery.

La siguiente tabla enumera los temas relacionados que pueden ayudar a comprender la implementación de XQuery en Database Engine (Motor de base de datos).

Tema

Descripción

Implementar XML en SQL Server

Explica la compatibilidad del tipo de datos xml en el Database Engine (Motor de base de datos) y los métodos que se pueden usar con este tipo de datos.El tipo de datos xml forma el modelo de datos XQuery de entrada según el cual se ejecutan las expresiones XQuery.

Administrar colecciones de esquemas XML en el servidor

Describe cómo se puede asignar un tipo a las instancias XML almacenadas en una base de datos. Esto significa que se puede asociar una colección de esquemas XML a la columna de tipo xml. Todas las instancias almacenadas en la columna se validan y reciben un tipo según el esquema de la colección y proporcionan la información de tipos para XQuery.

Representación de tipo de datos xml en la base de datos AdventureWorks

Explica la columna de tipo xml y las instancias almacenadas en ella, en la base de datos AdventureWorks. Casi todos los ejemplos de XQuery se escriben para la base de datos AdventureWorks y las columnas de tipo xml contenidas en ella. Si se comprenden las instancias XML, es más fácil comprender las consultas.

[!NOTA]

La organización de esta sección se basa en las especificaciones del borrador de trabajo de XQuery del World Wide Web Consortium (W3C). Algunos de los diagramas que se ofrecen en esta sección se han tomado de esas especificaciones. En esta sección, se compara la implementación de Microsoft XQuery con las especificaciones del W3C, se describe en qué se diferencia Microsoft XQuery del W3C y se indican las características del W3C que no se admiten. La especificación W3C está disponible en http://www.w3.org/TR/2004/WD-xquery-20040723.

En esta sección

Tema

Descripción

Conceptos básicos de XQuery

Proporciona una visión general básica de los conceptos de XQuery, así como de la evaluación de expresiones (contexto estático y dinámico), la atomización, el valor booleano efectivo, el sistema de tipos XQuery, la coincidencia de tipos de secuencias y el control de errores.

Expresiones XQuery

Describe las expresiones principales de XQuery, expresiones de rutas de acceso, expresiones de secuencias, expresiones de comparación aritmética y lógicas, construcción de XQuery, expresión FLWOR, expresiones condicionales y cuantificadas, y diversas expresiones sobre tipos de secuencias.

Módulos y prólogos (XQuery)

Describe el prólogo de las consultas XQuery.

Funciones de XQuery con el tipo de datos xml

Describe una lista de las funciones de XQuery admitidas.

Operadores XQuery con el tipo de datos XML

Describe los operadores XQuery admitidos.

Ejemplos adicionales de consultas XQuery con el tipo de datos XML

Proporciona más ejemplos de XQuery.