MySQL数值类型包括以下类别:
精确数值类型: INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
定点精确数值类型: DECIMAL, NUMERIC
近似数值类型: FLOAT, DOUBLE
位数据类型: BIT
一、精确数值类型:
二、近似数据类型(浮点数):
包括FLOAT和DOUBLE,FLOAT是单精度浮点数,占4个字节;DOUBLE是双精度浮点数,占8个字节。
FLOAT(M,D)或者DOUBLE(M,D),表示该字段最多能存储M位数(整数位+小数位),D代表小数位长度。注意,这种表示方法不是标准SQL的用法。
因为FLOAT和DOUBLE保存的是近似值,对于精度要求较高的数据,比如金额等,使用DECIMAL数据类型。
三、定点精确数值类型:
MySQL有两种表示小数的方式:浮点数和定点数。
浮点数就是FLOAT和DOUBLE,定点数DECIMAL和NUMERIC。NUMERIC与DECIMAL的实现没有区别。
DECIMAL(M,D),表示该字段最多能存储M位数(整数位+小数位),D代表小数位长度。比如工资salary字段的数据类型为DECIMAL(5,2),那么它的取值范围就是:-999.99 到 999.99。
四、位数据类型:
BIT用来存储二进制数,BIT(M),M的范围为1到64。
二进制数的字面值可以用b’val’和0bval来表示。val是一个用0和1来表示的二进制数。
查询结果中,直接返回二进制的方式可能显示效果不太友好,可以通过数值上下文或者一些函数来进行转换,BIN(二进制),HEX(十六进制),OCT(八进制)。
比如:
mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b’11111111’;
mysql> INSERT INTO t SET b = b’1010’;
mysql> INSERT INTO t SET b = b’0101’;
select b+0, BIN(b), OCT(b),HEX(b) from t
1
2
3
4
5
6
输出的结果如下: