SQL 数据类型

准确数值类型

精确数值类型说明存储空间
bigint存储从–263 (–9,223,372,036,854,775,808)到 263-1 (9,223,372,036,854,775,807) 范围的整数8 字节
int存储从–231 (–2,147,483,648 ) 到 231-1 ( 2,147,483,647 ) 范围的整数。4 字节
smallint存储从–215 (–32,768 ) 到 215-1 (32,767 ) 范围的整数2 字节
tinyint存储从 0 到 255 之间的整数。1 字节
bit存储 1 或 0。如果一个表中有不多于 8 个的 bit 列,则这些列公用一个字节存储1 字节
numeric(p,s)或 decimal(p,s)定点精度和小数位数。使用最大精度时,有效值从 –1038 +1 到 1038 -1。其中,s 为精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。s 为小数位数,指定小数点右边可以存储的十进制数字的最大个数,0 <= s <= p。s 的默认值为 0最多 17 字节

近似数值数类型

近似数值类型说明存储空间
float[(n)]存储从-1.79E + 308 至-2.23E –308、0 以及 2.23E–308 至 1.79E + 308 范围的浮点数。n 有两个值,如果指定的 n 在 1 ~ 24 之间,则使用 24,占用 4 字节空间;如果指定的 n 在 25~53 之间,则使用 53,占用 8 字节空间。若省略(n),则默认为 534 字节或 8 字节
real存储从–3.40E + 38 到 3.40E + 38 范围的浮点型数4 字节

字符串类型

普通编码字符串类型

普通编码字符串类型说明存储空间
char(n)固定长度的普通编码字符串类型,n 表示字符串的最大长度,取值范围为 1 ~ 8000n 个字节。当实际字符串所需空间小于 n 时,系统自动在后边补空格
varchar(n)可变长度的字符串类型,n 表示字符串的最大长度,取值范围为 1 ~ 8000字符数+ 2 字节额外开销
text最多可存储 231-1 (2,147,483,647) 个字符每个字符 1 个字节
varchar(max)最多可存储 231-1 个字符字符数+ 2 字节额外开销

说明:如果在使用 char(n)或 varchar(n)类型时未指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。

统一字符编码字符串类型

统一编码字符串类型说明存储空间
nchar(n)固定长度的统一编码字符串类型,n 表示字符串的最大长度,取值范围为 1 ~ 40002n 字节。当实际字符串所需空间小于 2n 时,系统自动在后边补空格
nvarchar(n)可变长度的统一编码字符串类型,n 表示字符串的最大长度,取值范围为 1 ~ 40002*字符数+ 2 字节额外开销
ntext最多可存储 230-1 (1,073,741,823) 个统一字符编码的字符每个字符 2 个字节
nvarchar(max)最多可存储 230-1 个统一字符编码的字符2*字符数+ 2 字节额外开销

二进制字符串类型

二进制字符串类型说明存储空间
binary(n)固定长度的二进制数据,n 的取值范围为 1 ~ 8000n 字节
varbinary(n)可变长度的二进制数据,n 的取值范围为 1 ~ 8000。字符数+ 2 字节额外开销
image可变长度的二进制数据,最多为 231-1 (2,147,483,647)个十六进制数字每个字符 1 个字节
varbinary(max)可变长度的二进制数据,最多为 231-1 (2,147,483,647)个十六进制数字字符数+ 2 字节额外开销

日期时间类型

日期时间类型说明存储空间
date定义一个日期,范围为 到 。字符长度 10 位,默认格式为:YYYY-MM-DD。YYYY 表示 4 位年份数字,范围从 0001 到 9999;MM 表示 2 位月份数字,范围从 01 到 12;DD 表示 2 位日的数字,范围从 01 到 31(最大值取决于具体月份)3 字节
time[(n)]定义一天中的某个时间,该时间基于 24 小时制。默认格式为:hh:mm:ss[.nnnnnnn],范围为 00:00:00.0000000 到 23:59:59.9999999。精确到 100 纳秒。
n 为秒的小数位数,取值范围是 0 到 7 的整数。默认秒的小数位数是 7(100ns)
3~5 字节
datetime定义一个采用 24 小时制并带有秒的小数部分的日期和时间,范围为到-,时间范围是 00:00:00 到 23:59:59.997。默认格式为:YYYY-MM-DD hh:mm:ss.nnn,n 为数字,表示秒的小数部分(精确到 0.00333 秒)8 字节
smalldatetime定义一个采用 24 小时制并且秒始终为零(:00)的日期和时间,范围为到。默认格式为:YYYY-MM-DD hh:mm:00。精确到 1 分钟4 字节
datetime2定义一个结合了 24 小时制时间的日期。可将该类型看成是 datetime 类型的扩展,其数据范围更大,默认的小数精度更高,并具有可选的用户定义的精度。默认格式是:YYYY-MM-DD hh:mm:ss[.nnnnnnn],n 为数字,表示秒的小数位数(最多精确到 100 纳秒),默认精度是 7 位小数。该类型的字符串长度最少 19 位(YYYY-MM-DD hh:mm:ss),最多 27 位(YYYY-MM-DD hh:mm:ss.0000000)6 ~ 8 字节
datetimeoffset定义一个与采用 24 小时制并与可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24 小时制)是时区一致的。语法格式为:datetimeoffset [(n)],n 为秒的精度,最大为 7。默认格式为:YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+ | -}hh1:mm1],其中 hh1 的取值范围为-14 到 +14,mm1 的取值范围为 00 到 59。该类型的日期范围为到,时间范围为 00:00:00 到 23:59:59.9999999。时区偏移量范围为-14:00 到+14:00。该类型的字符串长度为:最少 26 位(YYYY-MM-DD hh:mm:ss {+ | -}hh:mm),最多 34 位 (YYYY-MM-DD hh:mm:ss.nnnnnnn {+ | -}hh:mm)8 ~ 10 字节

货币类型

货币类型说明存储空间
money存储–922,337,203,685,477.5808 到 922,337,203,685,477.5807 范围的数值,精确到小数点后 4 位8 字节
smallmoney存储-214,748.3648 到 214,748.3647 范围的数值,精确到小数点后 4 位4 字节