- •Лекция 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 Поддержка целостности данных
Создание таблиц
После определения типов данных, если это необходимо, можно приступить к созданию таблиц. Необходимо понимание того, как SQL Server хранит данные, и как определяются столбцы для оптимального хранения и производительности.
Как организовано хранение данных в строках
Строка данных состоит из заголовка и данных.
Четырехбайтный заголовок строки содержит информацию о столбцах: указатель конца порции данных фиксированной длины и существуют ли данные переменной длины в данной строке.
Раздел данных строки может содержать следующие элементы:
Данные фиксированной длины. Эти данные располагаются до начала данных переменной длины. Пустые данные фиксированной длины занимают столько же места, сколько и непустые данные фиксированной длины. Поэтому, если таблица содержит только фиксированные данные, то каждая страница хранит одинаковое число строк.
Null-блок. Содержит набор байт переменной длины. Он состоит из 2 байт, хранящих число столбцов, имеющих null-значения. Далее следует битовая карта, показывающая, какие столбцы принимают null-значения. Размер битовой карты равен числу бит из расчета 1 бит на столбец, округленных до ближайшего большего числа байт. Восемь столбцов требуют 1-байтной битовой карты, 16 столбцов – 2-хбайтной и т.д.
Переменный блок. Первые 2 байта хранят число столбцов переменной длины. Дополнительно, каждые следующие 2 байта хранят указатель на конец столбца переменной длины. Переменный блок отсутствует, если нет столбцов переменной длины.
Данные переменной длины. Эти данные следуют за данными фиксированной длины. Пустые данные переменной длины не занимают места. Поэтому таблица со столбцами переменной длины может иметь строки разной длины.
Как хранятся большие значения данных
Строка не может быть больше чем страница данных. Поэтому, столбец не может хранить значение, занимающее более чем 8 Кб. Большие данные хранятся отдельно от строки, а в строке содержится только указатель на эти данные.
Типы данных LOB (Large Object) могут храниться как одна коллекция страниц или в строках данных. К типам данных LOB относятся:
text. Этот тип данных может хранить до 2 147 483 647 символов. Этот тип данных не может использоваться в хранимых процедурах.
ntext. Может хранить в 2 раза меньше символов, чем тип данных text.
image. Может хранить до 2 Gb двоичных данных.
Так как text, ntext и image хранят обычно большие объемы данных, то SQL Server хранит их отдельно от строк. 16-байтный указатель в строке данных указывает на корень B-дерева, содержащего данные. Этот корень есть указатель на блоки данных. Если данные занимают больше, чем 32 Kb, то организуются промежуточные узлы между корнем и блоками данных.
Если содержимое LOB типов не очень большое (до 8 Kb), то SQL Server допускает хранение их значений непосредственно в строках данных.
С типами данных varchar, nvarchar и varbinary может использоваться спецификатор max. Тогда они допускают значения более 8 Kb и эти значения хранятся подобно значениям LOB-типов.
Можно управлять местом хранения больших значений типов varchar, nvarchar и varbinary с помощью опции large value types out of row хранимой процедуры sp_tableoption. Если эта опция имеет значение ON, то большие данные хранятся отдельно от строк. Иначе (опция OFF), эти данные могут храниться непосредственно в строке или отдельно в зависимости от того, сколько они реально занимают места.