在sql server2008中,数据类型主要包括以下几种:整数型,货币型,小数类型,日期时间类型,字符串型,二进制以及其它的数据类型。

整数类型范围由小到大是:bit,tinyint,smaillint,int,bigint。bit就是布尔类型。它的值只能为1,0或者null。tinyint的值范围是0-255,smallint相当于java中的short类型,bigint相当于java中的long类型。

货币型只有两种:money与smallmoney。smallmoney占4个字节,money占8个字节。

小数类型分为两种:带固定精度的小数与近似数字型。带固定参数的小数型主要有numric与decimal两种,可以指定精度,如numeric(3,1)表示数据一共有3位,整数2位,小数1位。numeric与decimal完全相同,不管是范围还是在系统内存占用上都一致。看到网上不少资料说decimal的范围比numeric小一点,其实两种类型的范围都是从-10(38)+1~10(38)-1,而他们储存长度与精度有很大的关系,1-9位是5字节,10-19位是9字节,20-28位是13字节,29-38位是17字节。

近似数字型主要由real和float两种,它们主要用科学计数法来存储庞大的数据,它的弊端是会造成精度丢失。real占4位,float最多占15位。

关于日期时间类型可以参考SQL Server 2008中的新日期数据类型

字符串型由普通字符串型和unicode字符串型。普通字符串型主要有char,varchar,text。char表示固定长度字符串,1个字符占1个字节,插入的数据不够定义的长度,系统会在末尾自动补空格。varchar是可变长度的字符串,varchar(10)表示允许的最大长度为10个字符,如果输入的实际长度只有8位,那就只占8位。varchar允许的最大长度为8000。varchar(max)根据你实际输入的长度再加2个字符,最多可以储存2(31)-1个字符。text最多可以储存2(31)-1个字符。

unicode字符串类型用法与varchar基本一致,区别是unicode采用双字节编码,即一个字符占两个字节。所以nvarchar(max)存储实际输入长度的两倍再加两个字节。

二进制型主要由binary,varbinary,image。需要注意的是image可以存储任何二进制文件,而不仅限于图片,还如word,exe执行文件等。

其他数据类型包括timestamp,uniqueidentifier,游标类型,表类型,返回值类型等。在这里不做详细阐述。只简单介绍下timestamp和uniqueidentifier,timestamp可以提供在数据库内的唯一值,当插入或者更新数据时,该值会自动更新。每张表只能有一个timestamp字段。uniqueidentifier提供的是全球范围的唯一值。这两种类型存储的都是16进制的数据,timestamp占8位,uniqueidentifier占16位。