今天给大家分享一下数据库里面的数据类型。不同的数据库对 SQL 标准做了不同的拓展。MySQL 除了支持 SQL 标准中的数值类型,如严格数值类型以及近似数值类型,还拓展了新的数值类型,如 BIT 等。
整数类型
整数类型,顾名思义是用来存储整数的。MySQL 支持的整数类型有 SQL 标准中的整数
类型 INTEGER 和 SMALLINT,并在此基础上拓展了新的整数类型,如 TINYINT、
MEDIUMINT、BIGINT。
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2字节 (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3 字节 (-8388608,8388607) (0,16777215) 大整数值
INT/INTEGER 4 字节 (-2147483648,2147483647) (0,4294967295) 大整数值
BIGINT 8 字节(-9233372036854775808,
9223372036854775807)
(0,18446744073709551615) 极大整数值。
看到上面我们可以得出一个结论,那就是不同的整数类型所占用的储存空间大小不同。
说完了整数类型,接下来就是浮点数和定点数类型。
1.浮点数类型包括 FLOAT(单精度)和 DOUBLE(双精度)两种,定点数类型只包括
DEC/DECIMAL/NUMERIC 一种(DEC/DECIMAL 与 NUMERIC 表示的是同一种数据类型,
习惯上使用 DEC 或 DECIMAL)。
然后我会在下面给你们列出浮点数所占空间大小及表数范围:
FLOAT 4 字节
(-3.402823466E+38,
-1.175494351E-38),0,
(1.175494351E-38,
3.402823466351E+38)
0,(1.175494351E-38,
3.402823466E+38)
作用:单精度浮点,数值
DOUBLE 8 字节
(-1.7976931348623157E+308,
-2.2250738585072014E-308),0,
(2.2250738585072014E-308,
1.7976931348623157E+308)
0,(2.2250738585072014E-308,
1.7976931348623157E+308)
作用:双精度浮点,数值。
最好就是定点数类型了。我们先来介绍一下什么叫定点数:定点数类型在数据库中是以字符串形式存的,因此是精确值。定点数只有一种数据类型,即 DECIMAL,该数据类型用于精度要求非常高的计算中,如涉及金钱操作的领域
下面我也会给你们列出定点数所占内存大小及表数范围:
浮点数类型:DECIMAL(M,D) 大小:M+2
表数范围:最小最大取值范围与 DOUBLE 相同;指定 M 和 D 时,有效取值范围由 M 和 D 的大小决定
作用:精度较高的,小数值
DECIMAL(M,D)的用法基本与浮点数类型(M,D)的用法相似,但是一些细节上仍有不
同:
(1) DECIMAL 类型的 M 默认值为 10,D 默认值为 0。如果在创建表时,定义某字段为
DECIMAL 类型而没有带任何参数,则等同于 DECIMAL(10,0),比如我们要存储的数据是
1.23,则保存到数据库中的实际是 1,而不是 1.23。如果只带一个参数,则该参数为 M 值,
D 则取默认值 0。
(2) M 的取值范围为 1~65,取 0 时会被设为默认值 10,超出范围则会报错。
(3) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。