MySQL数据类型:数值类型
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
输出的结果如下:
号外号外:
本公众号开通了MySQL每日知识点的特色栏目,大概有100期左右,每次发布的内容可能不会很多,但都是一些比较重要的、工作中经常会遇到的一些知识点。MySQL版本使用的是5.7;如未特别说明,默认使用的存储引擎是InnoDB。
欢迎关注公众号【互联网全栈架构】,获取最新的MySQL知识点。
【下期预告】:MySQL数据类型:日期时间类型