数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举 SQL Server 常见数据类型的使用规则,方便查阅。
整数类型
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。 |