Введение в программирование SQL Server. Создание и управление базой данных. Инструменты целостности данных, страница 15

Тип данных точных чисел позволяет вам указать точность для использования. Для примера, вы можете указать три цифры после запятой и четыре до запятой. Запрос всегда будет возвращать точно то, что вы ввели. Сервер SQL поддерживает два типа точных чисел для совместимости ANSII – decimal и numeric.

Обычно вы будете использовать точные числа для финансовых приложений, в которых вы хотите отображать данные твёрдо (всегда 2 знака после запятой).

Приблизительные типы числовых данных хранят данные настолько точно, насколько это возможно. Для примера, функция 1/3 будет отображаться в системе как 0.33333 (повторяющееся 3). Сервер SQL поддерживает два типа приблизительных чисел – float и real.

Если вы округляете числа для выполнения чёткого сравнения между числами, вы должны избегать использования приближённого типа чисел.

Создание и удаление типов данных определённых пользователем

Типы данных определённые пользователем основываются на типах данных предоставляемых системой. Они позволяют вам определить типы данных, для обеспечения совместимости, когда вы работаете с часто используемыми элементами данных в разных таблицах или базах данных. Тип данных определённый пользователем определяется для определённой базы данных.

Типы данных созданные для базы данных model автоматически помещаются во все новые базы данных. Все типы данных помещаются в качестве строк в системную таблицу systypes.

Вы можете создавать и удалять типы данных определённые пользователем с помощью SQL Server Enterprise Manager или с помощью встроенных процедур. Имя типа данных должно следовать за правилами определения имени и должны быть уникальны для каждой базы данных. Определение типов данных определённых пользователем на основе типов предоставляемых системой желательно указывать NULL или NOT NULL.

Для создания типа данных определённого пользователем используется системная процедура sp_addtype.

sp_addtype [ @typename = ] type,

[ @phystype = ] system_data_type

[ , [ @nulltype = ] 'null_type' ]

[ , [ @owner = ] 'owner_name' ]

Следующий пример создаёт три новых типа:

EXEC   sp_addtype  city,       'nvarchar(15)', NULL

EXEC   sp_addtype  region,     'nvarchar(15)', NULL

EXEC   sp_addtype  country,    'nvarchar(15)', NULL

Для удаления пользовательской переменной используется процедура sp_droptype:

sp_droptype [ @typename = ] 'type'

Следующий пример удаляет пользовательский тип:

EXEC sp_droptype city

Выполните процедуру sp_help для получения списка всех текущих объявленных типов данных.

Рекомендации при создании типов данных

*  Если длинна переменной может изменятся, то используйте изменяющиеся типы. Например, если у вас есть список имён (длина имени может быть любой), вы можете использовать varchar вместо char.

*  Для числовых типов данных, размер и требуемый уровень точности помогает определить ваш выбор. Чаще всего используйте decimal.

*  Если вы храните более 8000 байт, используйте text или image. Если меньше, то binary или char. Если возможно, то используйте varchar, потому что он более функционален, чем text или image.

*  Используйте тип данных money для денежных типов.

*  Не используйте приближённые типы данных float и real для главного ключа, потому что значения в этих колонках не точные, и не подходят для сравнения.

4.2 Создание таблиц

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

Как SQL Server организовывает данные в строке

Строка данных состоит из строки заголовка и порции данных. Это важно для понимания элементов порции данных каждой строки для точного определения размера таблицы.

Заголовок содержит 4 байта информации о колонке строки данных, таких как указатель на расположение конца фиксированной порции данных строки, и какой размер переменной используется в строке.

Порция данных строки может содержать следующие элементы:

*  Данные фиксированной длины – помещаются  в страницу перед данными, переменной длинны.