整数类型

int  存储范围是-2,147,483,648到2,147,483,647之间的整数,主键列常设置此类型。 (每个数值占用 4字节)
smallint  存储范围是-32,768 到 32,767 之间的整数,用来存储限定在特定数值范围内的数据。 (每个数值占用 2 字节)
tinyint  存储范围是0到255 之间的整数,用来存储有限数目的数值。 (每个数值占用 1 字节)
bigint  存储范围是-9,223,372,036,854,775,808到 9,223,372,036,854,775,807之间的整数。 (每个数值占用 8 字节)
bit  值只能是0或1,当输入0以外的其他值时,系统均把它们当1看待。常用来表示真假、男女等二值选择。

数值类型

decimal(p,s)  p 为精度(有效位),表示可储存数值的最大位数,小数点左右两侧都包括在内,默认最大位为38 位;s为小数位数,标识小数点后  面所能储存的最大位数,默认最小位为0位。如:123.45,则 p=5,s=2(内存大小取决于精度p)
numeric(p,s)  numeric 和 decimal 是功能相同的,同是用来保存精度可变的浮点型数据。
float  浮点型,它是一种近似数值类型,float(n)可储存1-53的可变精度浮点数值。 (内存大小取决于精度n)
money  货币型,能存储从-9220 亿到 9220 亿之间的数据,精确到小数点后四位。 (每个数值占用 8 字节)

日期时间

datetime  储存有效日期范围是1753/1/1~9999/12/31,可精准到3.33毫秒。(每个数值占用 8 字节)
smalldatetime  储存有效日期范围是1900/1/1~2079/6/6,精确到分钟。(每个数值占用 4 字节)

二进制类型

image  虽然类型名为image, 但是并不意味着只能保存图片二进制数据,实际上它可以保存任何二进制数据。

字符串类型

char(m)  固定长度字符串,长度为 m。
nchar(m)  国际化固定长度字符串,长度为 m。
varchar(m)  可变长度字符串,最大长度为m,且必须是一个介于 1 和 8,000 之间的数值。
nvarchar(m)  国际化可变长度字符串,最大长度为m, 且必须是一个介于 1 和 4,000 之间的数值。
text  可变长度字符串,最大长度为 231 - 1个字节。
ntext  国际化可变长度字符串,最大长度为 230 - 1个字符。
国际化就是通用与标准。char、varchar、text储存的字符是基于ASCII编码格式,对于其他编码格式的字符可能会造成存储问题。Unicode字符集(万国码)就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、 nvarchar、ntext存储的正是Unicode编码格式的字符。所以一般来说,如果含有中文字符,用nchar、nvarchar、ntext, 如果只含英文字符,就用char、varchar、text。