Пространственные типы данных
Пространственные типы данных появились только в Microsoft SQL Server 2008. Эти типы данных представляют сведения о физическом расположении и форме геометрических объектов. Такими объектами могут быть точки или более сложные объекты, например страны, дороги, озера.
SQL Server поддерживает два пространственных типа данных:
· geometry (плоский) - представляет данные в эвклидовом пространстве (плоской системе координат).
· geography(геодезический) - позволяет сохранять эллипсоидальные (сферические) данные, такие как координаты широты и долготы GPS.
Специальные типы данных
Типы специальных данных не подходят ни к одной из других категорий типов данных. В SQL Server присутствуют следующие особые типы данных: hierarchyid, sql_variant, sysname, table, rowversion, xml, uniqueidentifier, cursor.
Тип данных hierarchyid
В Microsoft SQL Server 2008 был введен новый тип данных hierarchyid, который используется для представления положения в древовидной иерархии. Столбец типа hierarchyid не принимает древовидную структуру автоматически. Приложение должно создать и назначить значения hierarchyid таким образом, чтобы они отражали требуемые связи между строками.
Значения hierarchyid обладают следующими свойствами:
· Исключительная компактность
Среднее число бит, необходимое для представления узла в древовидной структуре с n узлами, зависит от среднего количества потомков у узла. Для представления узла в иерархии организации, насчитывающей 100 000 человек со средним уровнем ветвления 6, необходимо около 38 бит. Эта величина округляется до 40 бит (5 байт), которые необходимы для хранения.
· Поддержка произвольных вставок и удалений
В любой момент можно создать одноуровневый элемент, расположенный справа от заданного узла, слева от заданного узла или между любыми двумя другими одноуровневыми элементами. Свойство сравнения сохраняется, если произвольное число узлов вставляется в иерархию или удаляется из нее.
· Кодировка в типе данных hierarchyid ограничена 892 байтами. Следовательно, узлы, имеющие слишком много уровней, чтобы уместиться в 892 байта, не могут быть представлены типом данных hierarchyid.
Тип данных sql_variant
Тип данных sql_variant позволяет сохранять данные различных типов в одном столбце, параметре или переменной. В каждом экземпляре столбца типа sql_variant хранятся значения и метаданные, описывающие эти значения (Базовый тип данных, Максимальный размер, Масштаб, Точность, Параметры сортировки).
Тип данных sysname
Тип данных sysname используется в столбцах таблицы, переменных и параметрах хранимых процедур, содержащих названия объектов. Тип данных sysname является псевдонимом типа nvarchar(128), по умолчанию sysname имеет значение NOT NULL. В более ранних версиях SQL Server тип sysname фунционально эквивалентен varchar(30).
Тип данных table
Тип данных table используется для определения временных таблиц. В переменных этого типа сохраняются результирующие наборы для последующей обработки. Этот тип данных может использоваться только для определения локальных переменных типа table и значений, возвращаемых пользовательской функцией.
Определение табличной переменной или возвращаемого значения включает определения столбцов, типа данных, точности и размера каждого столбца. Определенная пользователем таблица не может быть использована в качестве пользовательского типа данных.
Тип данных rowversion
Значения rowversionявляются двоичными числами, указывающими относительную последовательность, в которой происходило изменение данных в базе данных -значение rowversionизменяется всякий раз при изменении строки. Размер при хранении составляет 8 байт. Тип данных rowversionне связан со временем или с датой.
Тип данных xml
Тип данных xml позволяет хранить XML-документы и их фрагменты в базе данных SQL Server. Database Engine позволяет создавать столбцы и переменные типа xml, в которых можно хранить экземпляры XML. При этом размер хранимого экземпляра типа данных xml не должен превышать 2 Гб. SQL Server поддерживает валидацию значений столбцов и переменных типа xml при помощи XML-схем, а также преобразование реляционных данных в xml и обратно.