Типы данных char в ANSI, nchar в Unicode имеют фиксированный размер - всегда требуется один и тот же объем памяти при любом количестве символов, хранящихся в столбце. Например, одно значение столбца с типом char(10) занимает 10 байт памяти независимо от того, хранится ли в нем 1 символ или 10. Неиспользуемое пространство дополняется пробелами до максимально возможного количества символов в столбце.
42
В то же время, для хранения каждого символа в столбце требуется: при типе данных varchar(10) - 1 байт, при типе данных nvarchar(n) - 2 байта; при этом требуемый объем памяти зависит от заполнения столбца (т.е., столбец имеет переменный размер, и не происходит хранение «пустого места» - пробелов).
43
Типы данных text и ntext служат для хранения больших массивов символьных данных. Для столбцов с такими типами данных запрещены многие операции и функции. Из-за этих ограничений, начиная с версии СУБД SQL Server 2005, появились типы данных varchar(max) и nvarchar(max), которые объединяют возможности типов text/ntext, varchar/nvarchar, могут хранить до 2 Гб данных и не имеют ограничений по использованию с различными операциями и функциями.
44
3.6. Двоичные типы данных
45
Типы данных binary служат в основном для хранения файлов в SQL Server. Для хранения небольших файлов (например, групп файлов размером несколько Кб, содержащих различные данные в двоичном формате) используют типы данных binary/varbinary.
46
Часто используется тип данных image - служит для хранения как изображений, так и документов Word, Excel, PDF, Visio. Этот тип данных подходит для хранения любых файлов размером не более 2 Гб. Тип данных varbinary(max), впервые появившийся в SQL Server 2005, позволяет хранить такой же объем данных, как и image, и может применяться во всех операциях и функциях, где допустимы типы данных binary/varbinary.
3.7. Специальные типы данных
48
49
50
Тип данных sql_variant позволяет объявлять столбец или переменную без явного указания типа данных, которые будут в нем храниться. Затем sql_variant автоматически «преобразуется» к типу данных, добавляемых в столбец. В результате возможно появление различных проблем, связанных с несоответствием типов данных. Поэтому без явной необходимости применять тип данных sql_variant не рекомендуется.
51
52
Кроме приведенных системных типов данных таблиц, можно определять на их основе свои пользовательские типы данных для конкретной БД. В SQL Server 2008 появилось также несколько новых специализированных типов данных (рассмотрим далее).
54
3.8. Свойство IDENTITY
Кроме типов данных, для столбцов могут задаваться различные свойства. В частности, для одного столбца таблицы может быть задано свойство IDENTITY, которое определяет создание в столбце автоматически возрастающего значения. Это свойство имеет 2 параметра: исходное значение и инкремент, определяющий, насколько увеличивается исходное значение при генерировании каждого последующего значения.
55
Это свойство – аналог значений autonumber (в Access – тип данных Счетчик) и autoincrement в других языках. Свойство IDENTITY применимо к точным числовым типам: bigint, int, smallint, tinyint, decimal, numeric. Для использования с типами данных decimal, numeric необходимо приравнять в них число разрядов после запятой к нулю.
3.9. Общие рекомендации по выбору типа данных для столбца таблицы
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.