- •Лекция 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 Поддержка целостности данных
Запросы в режиме auto
Введение
Запросы в режиме AUTO производят XML представления данных о сущностях. Рассмотрите следующие особенности опции AUTO:
■ Каждая строка, возвращаемая в соответствии с запросом, представляется элементом XML с тем же самым именем как у таблицы, из которой она была получена (или с псевдонимом, используемым в запросе).
■ Каждое соединение JOIN в запросе преобразуется во вложенный элемент XML, уменьшая дублирование данных в получающемся фрагменте XML. Порядок операторов JOIN влияет на порядок вложенных элементов.
■ Чтобы гарантировать, что дочерние элементы сопоставлены правильно с их родителем, используйте фразу ORDER BY, чтобы возвратить данные в правильном иерархическом порядке.
■ Каждый столбец в результирующем наборе представлен атрибутом, пока не определена опция ELEMENTS, когда каждый столбец представлен дочерним элементом.
■ Агрегированные столбцы и фраза GROUP BY не поддерживается в запросах в режиме AUTO (хотя Вы можете использовать запросы в режиме AUTO, чтобы получить агрегированные данные из представления, которое использует фразу GROUP BY).
Получение вложенных данных при использовании режима auto
В следующем примере показывается, как Вы можете использовать запросы в режиме AUTO, чтобы возвратить XML фрагмент, содержащий список заказов.
SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID
FROM Sales.Customer Cust JOIN Sales.SalesOrderHeader [Order]
ON Cust.CustomerID = [Order].CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO
Этот запрос производит фрагмент XML в формате, показанном в следующем примере.
<Cust CustID="1" CustomerType="S">
<Order SalesOrderID="43860"/>
<Order SalesOrderID="44501"/>
</Cust>
Заметьте, что столбец CustomerID и таблицы Customer и SalesOrderHeader используют псевдонимы для определения имен атрибута и элементов.
Получение данных в виде элементов
Следующий пример показывает, как Вы можете получить те же самые данные в виде элементов а не в виде атрибутов, определяя опцию ELEMENTS.
SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID
FROM Sales.Customer Cust JOIN Sales.SalesOrderHeader [Order]
ON Cust.CustomerID = [Order].CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO, ELEMENTS
Этот запрос производит фрагмент XML в формате, показанном в следующем примере.
<Cust>
<CustID>1</CustID>
<CustomerType>S</CustomerType>
<Order>
<SalesOrderID>43860</SalesOrderID>
</Order>
<Order>
<SalesOrderID>44501</SalesOrderID>
</Order>
</Cust>
...
Так же, как и в режиме RAW, Вы можете использовать опцию ROOT, как показано в следующем примере.
SELECT Cust.CustomerID CustID, CustomerType, SalesOrderID
FROM Sales.Customer Cust JOIN Sales.SalesOrderHeader [Order]
ON Cust.CustomerID = [Order].CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO, ELEMENTS, ROOT('Orders')
Этот запрос представляет документ XML в формате, показанном в следующем примере.
<Orders>
<Cust>
<CustID>1</CustID>
<CustomerType>S</CustomerType>
<Order>
<SalesOrderID>43860</SalesOrderID>
</Order>
<Order>
<SalesOrderID>44501</SalesOrderID>
</Order>
</Cust>
...
</Orders>
Запросы в режиме explicit
Введение
Иногда деловые документы, которые Вы должны обменяться с торговыми партнерами, требуют формат XML, который не может быть получен при использовании режимов RAW или AUTO. Когда данные таблицы соответствуют элементу XML, столбцы таблицы могут быть представлены как
■ значение элемента.
■ атрибут.
■ дочерний элемент.