SQL研究类似的数据类型

最常用的数字类型是int,但未必是最好的选择。Bigint、smallint字段可以应用于特殊的场合。其特点如下表所示:



数据类型
范围
保管部



bigint


2 ^ 63(922337203685477580)2(922337203685477580)^ 63-1


8字节



int


2 ^ 31(2147483648)2(2147483647)^ 31-1


4字节



smallint


2 ^ 15(32768)2(32767)^ 15-1


2字节



TINYINT


0到255


1字节

可以看出,如果一列的值只有10,而使用int,则非行数据占用超过3字节。如果您有1G的行数,则在3G中占用更多的空间。如果仍在索引中,则需要占用不必要的3G。

与此类似的是浮点和实格式,它们的格式如下所示:



数据类型
范围
保管部






1.79e + 308 -2.23e-308和2.23e-308到1.79e + 308, 0


取决于n的值

1, 24 = 4字节

25, 53 = 8bytes




真正的


3.40e + 38 -1.18e - 38和0 - 38,1.18e 3.40e + 38


4字节

需要解释的是,浮子的长度取决于一个参数。虽然我们在声明时通常不指定浮点的长度,但实际上有这样一个选项。这个长度的默认值是53,并且值范围显示在上表中。

显然,如果你想表达的数字不超过38倍10,你应该使用真的,他可以节省你4字节。

另一个相关的例子是十进制和数值,它们是另一组精确表示值的类型。浮点和实实在不准确,所以我们不能做同样的比较。

小数和浮点数在函数上是等价的,为什么它们被分成两个名字,我不知道。

十进制的语句如下:十进制(p,s),p表示位数,包括小数点前后的数字,s表示小数位数,p不能超过38,当然s不能超过p,默认值是0。

小数的范围是由于P-S消退的积极或消极的10减去10的时间。例如,十进制的范围(2,1)是积极的和消极的9.9。

十进制的长度与p的大小有关,如下表所示:



精度
存储字节



1 - 9






10-19






20-28


十三



29-38


十七

您可以使用可变长度的字节来存储十进制。此时,数据库根据实际值的大小存储十进制,而不是根据语句。如果表中没有var长度的列,则需要另外两个字节,否则就不再需要额外的字节。

数据库中可变长度的十进制存储可以通过以下命令启动:

执行sp_db_vardecimal_storage_format'adventureworks ',' ';

通过执行sp_db_vardecimal_storage_format;看看所有的数据库,开始这个功能。

通过执行sp_tableoption'sales。salesorderdetail ','vardecimal存储格式,1;

为一个表启动长的十进制存储。

最后,看看datetime和smalldatetime,两者都代表时间,和的区别如下:

DateTime表示更多的时间,1753到9999,更高的精度,300秒,8字节;

为smalldatetime表达时间较短,1900到2079,精确到分,4字节。

通常,smalldatetime是足够的。