每天一个MySQL知识点【2】

MySQL数据类型:数值类型

MySQL数值类型包括以下类别:

精确数值类型: INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

定点精确数值类型: DECIMAL, NUMERIC

近似数值类型: FLOAT, DOUBLE

位数据类型: BIT

一、精确数值类型:每天一个MySQL知识点【2】
二、近似数据类型(浮点数):
  • 包括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知识点【2】

号外号外:

本公众号开通了MySQL每日知识点的特色栏目,大概有100期左右,每次发布的内容可能不会很多,但都是一些比较重要的、工作中经常会遇到的一些知识点。MySQL版本使用的是5.7;如未特别说明,默认使用的存储引擎是InnoDB。

欢迎关注公众号【互联网全栈架构】,获取最新的MySQL知识点。

【下期预告】:MySQL数据类型:日期时间类型
每天一个MySQL知识点【2】

;