1.字符类型
一般常用的varchar,char,text等,其中varchar为可变长,char为定长.varchar使用的好处是可以节约空间.char的好处是效率可能较高.
数据类型 | 描述 | 存储空间 |
---|
char(n) | n为1-8000字符之间 | n字节 | nchar(n) | n为1-4000 unicode字符之间 | 2*n字节 | nvarchar(max) | 最多为2^30-1(1073741823)unicode字符 | 2*字符数+2额外开销 | text | 最多为2^31-1(2147483647)字符 | 每字符1字节+2字节额外开销 | varchar(n) | n为1-8000字符之间 | 每字符1字节+2字节额外开销 | varchar(max) | 最多为2^31-1(2147483647)字符 | 每字符1字节+2字节额外开销 |
2.精确数值类型
数值类型一般使用bit,tinyint,smallint,int,bigint,numeric,deciaml,smallmoney,money.其中bit只能存储null,0,1.
数据类型 | 描述 | 存储空间 |
---|
bit | 0,1或者null | 1字节(8位) | tinyint | 0-255之间的整数 | 1字节 | smallint | -32768~32767之间的整数 | 2字节 | int | -2147483648~2147483647之间的整数 | 4字节 | bigint | -9223372036854775808~9223372036854775807之间的整数 | 8字节 | numric(p,s)或decimal(p,s) | 表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化 | 最多17字节 | money | -9223372036854775808.5808~9223372036854775807.5807 | 8字节 | smallmoney | -2147483648.3648~2147483647.3647 | 4字节 |
3.近似值数据类型
近似值类型包括float和real,用来表示浮点数,但是他们是近似的,不能精确的表示所有值
数据类型 | 描述 | 存储空间 |
---|
float[(n)] | -1.79E+308~1.79E+308 | n<=24 4字节,n>24 8字节 | real() | -3.04E+38~3.04E+38 | 4字节 |
4.二进制数据类型
varbinary,binary,varbinary(max)等二进制数据类型用于存储二进制数据,如图形文件,word文档或者mp3文件等.image数据类型可在数据页外存储最多2GB的文件.image数据类型的首选替代类型是varbinary(max)
数据类型 | 描述 | 存储空间 |
---|
binary(n) | n为1-8000十六进制数字之间 | n字节 | varbinary(n) | n为1-8000十六进制数字之间 | 每字符1字节+2字节额外开销 | varbinary(max) | 最多为2^31-1(2147483654)十六进制数字 | 每字符1字节+2字节额外开销 |
5.日期和时间数据类型
datetime和smalldatetime数据类型用于存储日期和时间数据.smalldatetime为4字节,存储1900-01-01到2079-06-06之间的时间,并且只能精确到分钟.datetime存储1753-01-01到9999-12-31日之间的时间.并且能精确到最近的3.33毫秒
sqlserver2012新增了4种时间相关的数据类型:datetime2,dateoffset.date,time.
数据类型 | 描述 | 存储空间 |
---|
date | 1年1月 1日-9999年12月31日,只存储日期 | 3字节 | datetime | 1753年1月1日~9999年12月31日,精确到最近的3.33毫秒 | 8字节 | datetime(n) | 1年1月1日~999年12月31日.0~7之间的n指定小数秒 | 6~8字节 | datetimeoffset(n) | 1年1月1日~999年12月31日.0~7之间的n指定小数秒+/-偏移量 | 8~10字节 | smalldatetime | 1900年1月1日~2079年6月6日,精确到1分钟 | 4字节 | time(n) | 小时:分钟:秒.9999999,0~7之间的n指定小数秒 | 3~5字节 |
6.其它系统数据类型
数据类型 | 描述 | 存储空间 |
---|
cursor | 包含对游标的引用,只用用作变量或者存储过程参数 | / | hierarchyid | 包含对层次结构中位置的引用 | 1-892字节+2字节额外开销 | sql_variant | 可能包含任何系统数据类型的值. | 8016字节 | table | 用于存储进一步处理的数据集,主要用于返回标志函数的结果集,也可以用于存储过程和批处理 | 取决于表定义和存储的行数 | timestamp或rowversion | 对于每个表是唯一的,自动存储的值.通常用于版本戳.该值在dml的时候自动更新 | 8字节 | uniqueidentifier | 包含全局唯一标识符GUID.该值可以从Newsequentialid()函数获得. | 16字节 | xml | 定义为unicode形式 | 最多2GB |
|