- •Лекция 1. Создание баз данных Знакомство с sql Server
- •Создание Базы данных
- •Команда создания бд (create database)
- •Опции базы данных
- •Категории опций базы данных
- •Источники информации о бд
- •Изменение параметров бд (alter database)
- •Удаление бд (drop database)
- •Создание Групп файлов (Filegroups)
- •Создание Схем (Schemas)
- •Создание Снапшотов (Snapshots)
- •Лекция 2. Создание типов данных и таблиц
- •Создание типов данных (Types)
- •Создание таблиц
- •Как организовано хранение данных в строках
- •Как хранятся большие значения данных
- •Рекомендации по созданию таблиц
- •Изменение и удаление таблиц
- •Создание секционированных таблиц
- •Функции секционирования (Partition Functions)
- •Операции над секционированными таблицами
- •Лекция 3 Получение xml-документов из реляционных таблиц (for xml)
- •Введение
- •Введение в for xml
- •Введение
- •Синтаксис фразы for xml
- •Примеры использования for xml
- •Запросы в режиме raw
- •Введение
- •Получение данных в сгенерированных элементах-строках
- •Получение данных в виде элементов
- •Получение данных при использовании корневого элемента и настроенного имени элемента строки
- •Запросы в режиме auto
- •Введение
- •Получение вложенных данных при использовании режима auto
- •Получение данных в виде элементов
- •Запросы в режиме explicit
- •Введение
- •Универсальные таблицы
- •Определение столбцов универсальной таблицы
- •Создание запроса для построения универсальной таблицы
- •Запросы в режиме path
- •Введение
- •Получение данных при использовании режима path
- •Изменение имени элемента row
- •Синтаксис для получения вложенных xml-документов
- •Введение
- •Использование режима auto для получения вложенных xml
- •Использование type для получения типа данных xml в подзапросе
- •Вложение таблиц при использовании режима explicit
- •Лекция 4 Разбор документов xml с использованием синтаксиса openxml
- •Введение
- •Порядок разбора данных xml
- •Хранимые процедуры для управления внутренним представлением дерева
- •Создание дерева с помощью хранимой процедуры sp_xml_preparedocument
- •Удаление дерева с использованием sp_xml_removedocument
- •Примеры a. Использование простой инструкции select с openxml
- •Б. Указание ColPattern для сопоставления столбцов xml-атрибутам
- •Дополнительная информация
- •Что такое xQuery?
- •Введение
- •Синтаксис xQuery
- •Операторы flowr
- •Метод value
- •Метод exist
- •Связывание реляционных столбцов и переменных
- •Метод modify
- •Введение
- •Оператор insert
- •Оператор replace
- •Оператор delete
- •Лекция 5 Реализация Хранимых Процедур и Функций
- •Лекция 7 Поддержка целостности данных
Примеры a. Использование простой инструкции select с openxml
В следующем примере
создается внутреннее представление
образа XML с помощью процедуры sp_xml_preparedocument
.
Инструкция SELECT
,
которая использует поставщик набора
строк OPENXML
,
выполняется для внутреннего представления
XML-документа.
Значение
аргумента flag устанавливается
в 1
.
Это свидетельствует об атрибутивной
модели сопоставления.
Поэтому, XML-атрибуты сопоставляются
столбцам набора строк. Аргумент rowpattern,
заданный как /ROOT/Customer
,
указывает, какие узлы <Customers>
должны
обрабатываться.
Необязательный аргумент ColPattern (шаблон столбцов) не задан, так как имя столбца совпадает с именами XML-атрибутов.
Поставщик набора
строк OPENXML
создает
набор строк с двумя столбцами
(CustomerID
и ContactName
),
из которых инструкция SELECT
извлекает
необходимые столбцы (в данном случае,
все столбцы).
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer',1)
WITH (CustomerID varchar(10),
ContactName varchar(20))
Ниже приводится результирующий набор.
CustomerID ContactName
---------- --------------------
VINET Paul Henriot
LILAS Carlos Gonzlez
Если выполняется
та же инструкция SELECT
с
аргументом flags,
установленным в значение 2
и
указывающим на сопоставление с
использованием элементов,
значения аргументов CustomerID
и ContactName
для
обоих клиентов в XML-документе возвращается
как NULL, потому что элементы<Customers>
не
содержат вложенных элементов.
Ниже приводится результирующий набор.
CustomerID ContactName
---------- -----------
NULL NULL
NULL NULL
Б. Указание ColPattern для сопоставления столбцов xml-атрибутам
Следующий запрос
возвращает идентификатор клиента, дату
заказа, идентификатор продукта и
количественные атрибуты XML-документа.
Аргументrowpattern задает
элементы <OrderDetails>
. ProductID
и Quantity
являются
атрибутами элемента <OrderDetails>
.
Однако OrderID
, CustomerID
и OrderDate
являются
атрибутами родительского элемента
(<Orders>
).
Необязательный аргумент ColPattern задан. Это указывает на следующее.
OrderID
,CustomerID
иOrderDate
в наборе строк сопоставляются атрибутам родителя узлов, заданных аргументом rowpattern в XML-документе.Столбец
ProdID
в наборе строк сопоставляется атрибутуProductID
, и столбецQty
в наборе строк сопоставляется атрибутуQuantity
узлов, заданных в аргументе rowpattern.
Хотя сопоставление с использованием элементов задано в аргументе flags, сопоставление, заданное в аргументе ColPattern, переписывает это сопоставление.
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5"
OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3"
OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
Ниже приводится результирующий набор.
OrderID CustomerID OrderDate ProdID Qty
------------------------------------------------------------------------
10248 VINET 1996-07-04 00:00:00.000 11 12
10248 VINET 1996-07-04 00:00:00.000 42 10
10283 LILAS 1996-08-16 00:00:00.000 72 3
Что такое Тип Данных xml?
Введение
Тип данных xml является родным типом данных для хранения XML документов или фрагментов в столбце, локальной переменной, или параметре до 2 гигабайтов. Способность к хранению XML непосредственно в реляционной базе данных имеет много преимуществ для разработчиков приложений.
Преимущества хранения XML в родном формате
Преимущества хранения XML включают:
■ И структурированные, и полуструктурированные данные хранятся в одном месте, облегчая управление ими.
■ Вы можете определить содержимое переменной в реляционной модели.
■ Вы можете выбрать самую подходящую модель данных для обеспечения специфических требований Вашего приложения, используя высоко оптимизированное хранилище данных и окружение запросов.
Функциональные возможности XML
Тип данных SQL Server 2005 xml хранит информационный набор документа XML в эффективном внутреннем формате. Данные можно рассматривать как оригинальный документ XML за исключением того, что не хранятся незначащие пробелы, порядок атрибутов, префиксы пространств имен и объявления XML. SQL Server 2005 обеспечивает следующие функциональные возможности для типа данных xml:
Индексирование XML. Столбцы, определенные как xml, могут быть проиндексированы при использовании индексов XML и полнотекстовые индексы. Это может значительно увеличить производительность запросов, которые получают данные XML.
Методы получения данных на основе запросов XQuery. Тип данных xml поддерживает методы query, value, и exist. Они могут использоваться, чтобы извлечь данные из XML при использовании выражений XQuery.
Модификация данных на основе запросов XQuery. Тип данных xml поддерживает метод modify, который использует расширение спецификации XQuery, чтобы выполнить обновления данных XML.
Типизированный XML. Это XML, который связан с некоторой схемой XML. Схема определяет элементы и атрибуты, которые разрешены в документе XML этого типа и определяет пространство имен для них. Когда используется тип данных xml, чтобы хранить типизированный XML, SQL Server проверяет соответствие XML-документа его схеме и оптимизирует внутреннее хранение данных, назначая соответствующие типы данных SQL Server тем данным, которые основаны на типах данных XML, определенных в схеме.