Смекни!
smekni.com

А. Н. Терехов Санкт Петербург (стр. 5 из 8)

2.5.7 Функции

Без функций, определяемых пользователем, XQuery был бы далек от языка от программирования. Определения таких функций располагаются в прологе запроса (query prologue) программы XQuery.

2.5.8 Сортировка и контекст

Для сортировки последовательности используется выражение sortby. Чтобы упорядочить последовательность книг по имени автора можно сделать следующее:

$books sortby (author/name)

Выражение sortby берет входную последовательность (в данном случае $books) и одно или несколько выражений упорядочения (ordering expressions). При сортировке реализация должна сравнивать две величины из входной последовательности, чтобы определить, какая должна идти первой. Для этого вычисляется выражение(я) упорядочения в контексте величины из входной последовательности. Поэтому path expression author/name вычисляется множество раз, каждый раз относительно разной книги, используемой в качестве контекстуальной (или текущей) единицы (context (or current) item).

Path expression также используют и устанавливают этот контекст. В author/name возвращаемые потомки name - это потомки из контекстуальной единицы author.

2.5.9 Определение типов

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

2.6. Поддержка XML в СУБД

2.6.1. В SQL server 2005

SQL Server 2005 обеспечивает обширную поддержку хранению и обработку XML данных. Вы можете сохранить XML документы и фрагменты прирожденно как столбцы и переменные T-SQL нового xml типа данных. Xml столбцы типа данных может быть индексирован, напечатан согласно XML схеме, и управлял использованием XQuery и XML Языком Манипулирования данными (язык DML).

Некоторые причины сохранять данные как XML включают следующее:

· использование административных возможностей сервера SQL, чтобы управлять XML данными

· эффективно совместное использование, запрос, и создание мелкомодульных модификаций к вашим XML данным

· гарантировать, что данные утверждены против существующей XML схемы

В дополнение к нативному сохранению XML данные, SQL Server 2005 позволяет Вам отображать относительные данные к XML данным, используя XQuery функции расширения и отображать XML данные к относительным данным, используя предложение FOR XML.

2.6.1.1 Xml Data Типа данных

Новые xml типа данных подержат сохраняющие и XML документы и фрагменты в базе данных. Фрагмент XML - XML образец, который не имеет единственного (корневого) элемента верхнего уровня. Вы можете создать столбцы, параметры, и переменные нового xml типа и сохранить XML образцы в них. Xml типа данных имеет максимальный размер 2GB.

2.6.1.1.1. Создание столбцы и переменные xml типа данных

Следующие подразделы описывают, как создать столбцы и переменные T-SQL xml типа данных:

2.6.1.1.1.1 Столбцы

Используйте инструкцию CREATE TABLE, чтобы создать таблицу, которая содержит один или более столбцов c xml типа данных. Синтаксис чтобы создавать таблицу столбцы c xml типа данных:

CREATE TABLE table_name ( ... xml_column_name xml [[DOCUMENT | CONTENT](schema_name.xml_schema_collection_name ) ], ... )Где

table_name - Имя таблицы в базе данных

xml_column_nameИмя столбца xml типа данных в таблице.

[ DOCUMENT | CONTENT ]

· Аспект DOCUMENT сдерживает напечатанный образец xml типа данных, чтобы позволить только единственный элемент верхнего уровня.

· Аспект CONTENT явно позволяет напечатанному образцу xml типа данных иметь нуль или больше элементов верхнего уровня и текстовых узлов в элементах верхнего уровня. Значение по умолчанию CONTENT.

schema_name - XML схема в XML коллекции схемы, чтобы связаться с столбцом xml типа данных

xml_schema_collection_name - Имя существующей XML коллекции схемы.

2.6.1.1.1.2 Переменные

Инструкция DECLARE используется, чтобы создать переменные T-SQL. Синтаксис чтобы создавать переменную xml типа данных:

DECLARE variable_name [AS] xml [([DOCUMENT | CONTENT] schema_name.xml_schema_collection_name)] Где: Variable_name- Имя переменной xml типа данных. Имя переменной должно быть предустановленно с амперсандом(@).

2.5.1.1.2 Методы xml Типа данных

Xml тип данных обеспечивает вспомогательные методы сделать запрос столбцов и переменных xml типа данных. Внутренне, методы xml типа данных обработаны как подзапросы. В результате, метод xml типа данных не может использоваться в инструкции PRINT или в предложении GROUP BY.

· query()

Метод xml типа данных query() делает запрос образца xml типа данных и возвращает образец xml типа данных без контроля типов. query() синтаксис:

query (XQuery)

Где:

XQuery - Выражение XQuery, которое делает запрос для узлов XML в образце xml типа данных

· value()

Метод value() xml типа данных исполняет запрос против образца xml типа данных и возвращает скалярное значение типа данных SQL. Синтаксис метода value(): value(XQuery, SQLType) Где:XQuery - Выражение XQuery, которое отыскивает данные от образца xml типа данных. Ошибка возвращена, если выражение не возвращает не менее одно значение.SQLType - Строка, буквальная из типа данных SQL, который будет возвращен. SQLType не может быть xml, CLR UDT, image, text, ntext, или sql_variant тип данных.

value() метод использует функцию CONVERT T-SQL неявно, чтобы конвертировать результат выражения XQuery к типу данных SQL.

value() оператор требует единственного операнда

· exist()

метод exist () xml тип данных возвращает значение, указывающее, возвращает ли выражение XQuery против образца xml типа данных непустой набор результата. Возвращаемое значение - одно из следующего:

1 – Выражение XQuery возвращает не менее один XML узел.

0 – Выражение XQuery возвращает пустой набор результата.

NULL – Образец xml типа данных, против которого запрос выполнен, является НУЛЕВЫМ.

Синтаксис метода exist(): exist (XQuery)

Где:

XQuery – Выражение XQuery

· modify( )

метод modify() xml тип данных метод изменяет содержание образца xml типа данных. Синтаксис метода modify(): modify (XML_DML)

Где:

XML_DMLИнструкция Data Manipulation Language XML. Инструкции языка DML, inserts, updates, or deletes узлы из образца xml типа данных.

modify() метод может только использоваться в предложении SET инструкции UPDATE.

· nodes( )

метод nodes() xml типа данных () делит образец xml типа данных в относительные данные, идентифицируя узлы, которые будут отображены к новой строке.nodes() синтаксис:

nodes (XQuery) as Table(Column)

Где:

XQueryВыражение XQuery, которое создает узлы, которые впоследствии выставлены в результате набор

TableИмя таблицы для набора результата

Column - Имя столбца для набора результата

2.6.1.1.3 Индексация XML Данных

xml типа данных сохранены как двойные большие объекты (большой двоичный объект) в столбцах xml типа данных. Если эти столбцы не индексированы, они должны быть shredded во время выполнения для каждой строки в таблице, чтобы оценить запрос. Это может быть дорогостоящим, особенно с большими образцами xml типа данных или большим количеством строк в таблице. Формирование первичных и вторичных индексов XML на столбцах xml типа данных может значительно улучшить выполнение запроса.

Столбец xml типа данных может иметь один первичный индекс XML и множественные вторичные индексы XML, где:

· Первичный индекс XML

Относительный индекс на shredded и сохранился представление всех тэгов, значений, и путей XML образцов в столбце xml типа данных. Индекс создает несколько строк данных для каждого образца в столбце.

Первичный индекс XML требует сгруппированного индекса на первичной ключи таблицы, содержащей индексируемый xml тип данных.

· Вторичный индекс XML

Далее улучшает выполнение для определенных типов запросов. Первичный индекс XML должен существовать на столбце xml типа данных прежде, чем вторичный индекс XML может быть создан.

Есть три типа вторичных индексов XML:

1. Индекс Path

Оптимизирует запросы, основанные на выражениях пути

2. Индекс Value

Оптимизирует запросы на основе значения для путей, которые включают подстановочные знаки или полностью не определены

3. Индекс Property

Оптимизирует запросы, основанные на свойствах в определенном XML образце, сохраненном в столбце

2.6.1.2 Поддержка XQuery в SQL server 2005

SQL Server 2005 имеет встроенную поддержку нативному хранению XML данных, используя XML тип данных. XQuery 1.0 - язык, который определяется Консорциумом Всемирной паутины (W3C) XML Группа Работы Запроса, чтобы формулировать запросы по XML данным. XQuery, подобно SQL, является декларативным языком запросов.

XQuery 1.0 осуществлен в SQL Server 2005, который в свою очередь основан на XQuery 1.0 июля 2004.

2.6.1.2.1 Структура XQuery выражения

Выражение XQuery в SQL Server 2005 состоит из двух разделов: Пролог и тело. Пролог может в свою очередь содержать namespace подраздел объявления. Namespace объявления используются, чтобы определить отображение между префиксом и namespace URI, таким образом дающими возможность Вам использовать префикс вместо namespace URI в теле запроса.

Тело выражения XQuery содержит выражения запроса, которые определяют результат запроса. Это может, например, быть сигнатура выражение FLWOR, XPath 2.0 выражения, или другое выражение XQuery типа конструкции или арифметического выражения.

2.6.1.2.2 XPath 2.0 Выражения

XQuery использует XPath 2.0 выражения, чтобы определить местонахождение узлов в документе и передвигаться от одного местоположения до другого в пределах отдельного документа или поперек документов. Навигационные определенные пути, используя XPath, состоят из последовательности шагов, отделенных /. Отдельный шаг включает ось, испытание узла, и нуль или больше спецификаторов шага.