SQL Server数据类型

SQL Server数据类型:

第一大类:整数数据

bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.
int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.
smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1
tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1


第二大类:精确数值数据

numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化.
decimal:和numeric差不多


第三大类:近似浮点数值数据

float:用8个字节来存储数据.最多可为53位.范围为:-1.79E+308至1.79E+308.
real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38


第四大类:日期时间数据

datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节.
smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31.使用4个字节.


第五大类:字符串数据

char:长度是设定的,最短为1字节,最长为8000个字节.不足的长度会用空白补上.
varchar:长度也是设定的,最短为1字节,最长为8000个字节,尾部的空白会去掉.
text:长宽也是设定的,最长可以存放2G的数据.


第六大类:Unincode字符串数据

nchar:长度是设定的,最短为1字节,最长为4000个字节.不足的长度会用空白补上.储存一个字符需要2个字节.
nvarchar:长度是设定的,最短为1字节,最长为4000个字节.尾部的空白会去掉.储存一个字符需要2个字节.
ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节.


第七大类:货币数据类型

money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节.
smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.


第八大类:标记数据

timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.
uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.


第九大类:二进制码字符串数据

binary:固定长度的二进制码字符串字段,最短为1,最长为8000.
varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉
image:为可变长度的二进制码字符串,最长2G.

 

SQL Server 数据类型使用分析

1.char,varchar,nchar,nvarchar

char性能好;varchar节省空间;选择方法:10个字节以上的用varchar

n类型的占用空间大,性能低,如果不准备存中文或中亚文字则尽量避免使用。

尤其向类似工号的字段更不要使用n类型,首先它不会存入中文,其次它可能作为索引,此时对性能的影响就更大。

2.datetime和smalldatetime

datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到毫秒。

smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。

3.bigint,int,smallint,tinyint和bit

bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。

int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。

smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。

tinyint:从0到255的整数数据。

bit:1或0的整数数据。

 

首先int,空间占用合适,运算速度快;(2147,...,...2个多亿)

如果非常在意空间的话,考虑tinyint

超大应用场合,考虑bigint

4.decimal和numeric

这两种数据类型是等效的。都有两个参数:p(精度)和s(小数位数)。p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p之间的值,默认小数位数是0。

5.float和real

float:从-1.79^308到1.79^308之间的浮点数字数据。

real:从-3.40^38到3.40^38之间的浮点数字数据。在SQL Server中,real的同义词为float(24)。

6.money,smallmoney

尽量考虑用decimal替代,原因:性能稍稍好一些;相对其它数据库兼容性好。

money的好处是可以用到某些货币运算函数。

float类型尽量少用,性能不好,精度不高,一般只用于科学计算。

7.text/image

考虑到维护方便、效率以及程序开发的方便性,最好不用,即不将其存入数据库中;采用varchar指向其相应的存储路径

你可能感兴趣的:(sql,Server数据类型)