数据表是由多个列组成,创建表时必须明确每个列的数据类型。以下列举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储存的字符是基于ASII编码格式,对于其他编码格式的字符可能会造成存储问题。Unicode字符集(万国码)就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar、ntext存储的正是Unicode编码格式的字符。所以一般来说,如果含有中文字符,用nchar、nvarchar、ntext,如果只含英文字符,就用char、varchar、text。 |