Справочник по языку XQuery (компонент Database Engine)

Язык Transact-SQL поддерживает подмножество языка XQuery, который используется для выполнения запросов к типу данных xml. Эта реализация XQuery совпадает с рабочим эскизом XQuery на июль 2004 г. Язык разрабатывается консорциумом World Wide Web Consortium (W3C) с участием всех основных поставщиков баз данных, а также корпорации Майкрософт. Так как спецификации W3C могут быть подвержены изменениям в будущем, перед тем как стать рекомендациями W3C, эта реализация может отличаться от конечной рекомендации. Данный подраздел охватывает семантику и синтаксис поднабора XQuery, который поддерживается в SQL Server.

Дополнительные сведения см. в разделе Спецификация языка W3C XQuery 1.0.

XQuery является языком, который может выполнять запросы к структурированным или полуструктурированным XML-данным. Благодаря поддержке типа данных xml в компоненте Database Engine, документы могут храниться в базе данных и запрашиваться при помощи языка XQuery.

Язык XQuery основан на существующем языке запросов XPath с дополнительной улучшенной поддержкой итераций, результатов сортировки и возможности конструировать необходимые структуры XML. Язык XQuery работает с моделью данных XQuery. Это абстракция XML-документов и результатов XQuery, которые могут быть типизированными и нетипизированными. Сведения о типе основываются на типах, предоставляемых языком XML-схем W3C. Если нет доступных сведений по типам, XQuery считает данные нетипизированными. Это похоже на то, как XPath версии 1.0 обрабатывает XML.

Для выполнения запроса к экземпляру XML, хранящемуся в переменной или столбце типа xml, можно использовать методы типа данных xml. Например, можно объявить переменную типа xml и выполнить запрос к ней, используя метод query() типа данных xml.

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

В следующем примере запрос выполняется к столбцу Instructions типа xml в таблице ProductModel базы данных 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

Запрос XQuery включает объявление пространства имен, declare namespaceAWMI=..., а также выражение запроса, /AWMI:root/AWMI:Location[@LocationID=10].

Обратите внимание на то, что запрос XQuery указан относительно столбца Instructions типа xml. Метод query() типа данных xml используется для определения запроса XQuery.

В следующей таблице перечисляются соответствующие разделы, которые могут помочь понять, как поддержка XQuery реализована в компоненте Database Engine.

Раздел

Описание

Реализация языка XML в SQL Server

Объясняется поддержка для типа данных xml в компоненте Database Engine и методы, которые можно использовать для этого типа данных. Тип данных xml формирует модель данных ввода XQuery, на которой выполняются выражения XQuery.

Управление коллекциями XML-схем на сервере

Описывается, как хранящиеся в базе данных экземпляры XML могут быть типизированы. Это означает, что можно связать коллекцию XML-схем со столбцом типа xml. Все экземпляры, хранящиеся в столбце, проверяются и типизируются схемой в коллекции и предоставляют типизированные сведения для XQuery.

Представление типов данных XML в базе данных AdventureWorks2008R2

Описывается столбец типа xml и экземпляры, которые в нем хранятся, в базе данных База данных AdventureWorks2008R2. Большинство образцов запросов XQuery обращаются к базе данных База данных AdventureWorks2008R2 и содержащимся в ней столбцам типа xml. Понимание экземпляров XML может помочь в понимании запросов.

ПримечаниеПримечание

Организация этого раздела основана на спецификации рабочего эскиза XQuery корпорации World Wide Web Consortium (W3C). Некоторые диаграммы, приведенные в этом разделе, взяты из спецификации. В этом разделе сравнивается реализация 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.

Функции XQuery для типа данных xml

Описывается список поддерживаемых функций XQuery.

Сравнение операторов XQuery с XML-данными

Описываются поддерживаемые операторы XQuery.

Дополнительные примеры запросов на языке XQuery к XML-данным

Приводятся дополнительные образцы запросов XQuery.