При создании таблицы для всех ее столбцов необходимо указать определенный тип данных. Тип данных определяет, какие значения могут храниться в столбце, сколько они будут занимать места в памяти.
Язык T-SQL предоставляет множество различных типов. В зависимости от характера значений все их можно разделить на группы.
Числовые типы данных
- BIT: хранит значение 0 или 1. Фактически является аналогом булевого типа в языках программирования. Занимает 1 байт.
- TINYINT: хранит числа от 0 до 255. Занимает 1 байт. Хорошо подходит для хранения небольших чисел.
- SMALLINT: хранит числа от –32 768 до 32 767. Занимает 2 байта
- INT: хранит числа от –2 147 483 648 до 2 147 483 647. Занимает 4 байта. Наиболее используемый тип для хранения чисел.
- BIGINT: хранит очень большие числа от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, которые занимают в памяти 8 байт.
- DECIMAL: хранит числа c фиксированной точностью. Занимает от 5 до 17 байт в зависимости от количества чисел после запятой.Данный тип может принимать два параметра precision и scale:
DECIMAL(precision, scale)
.Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 38. По умолчанию оно равно 18.Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0. - NUMERIC: данный тип аналогичен типу DECIMAL.
- SMALLMONEY: хранит дробные значения от -214 748.3648 до 214 748.3647. Предназначено для хранения денежных величин. Занимает 4 байта. Эквивалентен типу
DECIMAL(10,4)
. - MONEY: хранит дробные значения от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Представляет денежные величины и занимает 8 байт. Эквивалентен типу
DECIMAL(19,4)
. - FLOAT: хранит числа от –1.79E+308 до 1.79E+308. Занимает от 4 до 8 байт в зависимости от дробной части.Может иметь форму опредеения в виде
FLOAT(n)
, где n представляет число бит, которые используются для хранения десятичной части числа (мантиссы). По умолчанию n = 53. - REAL: хранит числа от –340E+38 to 3.40E+38. Занимает 4 байта. Эквивалентен типу
FLOAT(24)
.
Примеры числовых столбцов:
1
2
3
4
| Salary MONEY, TotalWeight DECIMAL (9,2), Age INT , Surplus FLOAT |
Типы данных, представляющие дату и время
- DATE: хранит даты от 0001-01-01 (1 января 0001 года) до 9999-12-31 (31 декабря 9999 года). Занимает 3 байта.
- TIME: хранит время в диапазоне от 00:00:00.0000000 до 23:59:59.9999999. Занимает от 3 до 5 байт.Может иметь форму
TIME(n)
, где n представляет количество цифр от 0 до 7 в дробной части секунд. - DATETIME: хранит даты и время от 01/01/1753 до 31/12/9999. Занимает 8 байт.
- DATETIME2: хранит даты и время в диапазоне от 01/01/0001 00:00:00.0000000 до 31/12/9999 23:59:59.9999999. Занимает от 6 до 8 байт в зависимости от точности времени.Может иметь форму
DATETIME2(n)
, где n представляет количество цифр от 0 до 7 в дробной части секунд. - SMALLDATETIME: хранит даты и время в диапазоне от 01/01/1900 до 06/06/2079, то есть ближайшие даты. Занимает от 4 байта.
- DATETIMEOFFSET: хранит даты и время в диапазоне от 0001-01-01 до 9999-12-31. Сохраняет детальную информацию о времени с точностью до 100 наносекунд. Занимает 10 байт.
Распространенные форматы дат:
yyyy-mm-dd
-2017-07-12
dd/mm/yyyy
-12/07/2017
mm-dd-yy
-07-12-17
В таком формате двузначные числа от 00 до 49 воспринимаются как даты в диапазоне 2000-2049. А числа от 50 до 90 как диапазон чисел 1950 - 1999.Month dd, yyyy
-July 12, 2017
Распространенные форматы времени:
hh:mi
-13:21
hh:mi am/pm
-1:21 pm
hh:mi:ss
-1:21:34
hh:mi:ss:mmm
-1:21:34:12
hh:mi:ss:nnnnnnn
-1:21:34:1234567
Строковые типы данных
- CHAR: хранит строку длиной от 1 до 8 000 символов. На каждый символ выделяет по 1 байту. Не подходит для многих языков, так как хранит символы не в кодировке Unicode.Количество символов, которое может хранить столбец, передается в скобках. Например, для столбца с типом
CHAR(10)
будет выделено 10 байт. И если мы сохраним в столбце строку менее 10 символов, то она будет дополнена пробелами. - VARCHAR: хранит строку. На каждый символ выделяется 1 байт. Можно указать конкретную длину для столбца - от 1 до 8 000 символов, например,
VARCHAR(10)
. Если строка должна иметь больше 8000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб:VARCHAR(MAX)
.Не подходит для многих языков, так как хранит символы не в кодировке Unicode.В отличие от типа CHAR если в столбец с типомVARCHAR(10)
будет сохранена строка в 5 символов, то в столце будет сохранено именно пять символов. - NCHAR: хранит строку в кодировке Unicode длиной от 1 до 4 000 символов. На каждый символ выделяется 2 байта. Например,
NCHAR(15)
- NVARCHAR: хранит строку в кодировке Unicode. На каждый символ выделяется 2 байта.Можно задать конкретный размер от 1 до 4 000 символов:
. Если строка должна иметь больше 4000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб.
Еще два типа TEXT и NTEXT являются устаревшими и поэтому их не рекомендуется использовать. Вместо них применяются VARCHAR и NVARCHAR соответственно.
Примеры определения строковых столбцов:
1
2
| Email VARCHAR (30), Comment NVARCHAR( MAX ) |
Бинарные типы данных
- BINARY: хранит бинарные данные в виде последовательности от 1 до 8 000 байт.
- VARBINARY: хранит бинарные данные в виде последовательности от 1 до 8 000 байт, либо до 2^31–1 байт при использовании значения MAX (VARBINARY(MAX)).
Еще один бинарный тип - тип IMAGE является устаревшим, и вместо него рекомендуется применять тип VARBINARY.
Остальные типы данных
- UNIQUEIDENTIFIER: уникальный идентификатор GUID (по сути строка с уникальным значением), который занимает 16 байт.
- TIMESTAMP: некоторое число, которое хранит номер версии строки в таблице. Занимает 8 байт.
- CURSOR: представляет набор строк.
- HIERARCHYID: представляет позицию в иерархии.
- SQL_VARIANT: может хранить данные любого другого типа данных T-SQL.
- XML: хранит документы XML или фрагменты документов XML. Занимает в памяти до 2 Гб.
- TABLE: представляет определение таблицы.
- GEOGRAPHY: хранит географические данные, такие как широта и долгота.
- GEOMETRY: хранит координаты местонахождения на плоскости.
Комментариев нет:
Отправить комментарий