Справочник по языку 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 в компоненте Database Engine и методы, которые можно использовать для этого типа данных. Тип данных xml формирует модель данных ввода XQuery, на которой выполняются выражения XQuery. |
|
Описывается, как хранящиеся в базе данных экземпляры XML могут быть типизированы. Это означает, что можно связать коллекцию XML-схем со столбцом типа xml. Все экземпляры, хранящиеся в столбце, проверяются и типизируются схемой в коллекции и предоставляют типизированные сведения для XQuery. |
|
Описывается столбец типа xml и экземпляры, которые в нем хранятся, в базе данных AdventureWorks. Большинство образцов запросов XQuery обращаются к базе данных AdventureWorks и содержащимся в ней столбцам типа 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, выражения FLWOR, условные и количественные выражения, а также различные выражения типов последовательностей. |
|
Описывает пролог XQuery. |
|
Описывается список поддерживаемых функций XQuery. |
|
Описываются поддерживаемые операторы XQuery. |
|
Дополнительные примеры запросов на языке XQuery к XML-данным |
Приводятся дополнительные образцы запросов XQuery. |
См. также