第三阶段 mysql开发 【数据类型】
定点数类型
简介
在 MySQL 中 只有一种那就是: DECIMAL(M,D),
其中 M被称为 精度 数据的总位数,D被称为 标度 代表数据的小数部分站的位数
定点数 在mysql内部是以字符串的形式进行储存的,它的精度比浮点数更加精确
适用场景 : 存储金额等需要高精度的数据。
特性: 存储数据都最大值和 double类型一样,但是他由 M,D来决定有效的数据范围,
而DECIMAL的存储空间并不是固定的,由精度M来决定总共占用的,存储空间为 M+2字节
如果没有设置 M,D的话 默认是 DECIMAL(10,0)
演示
我们创建 test1 表来演示定点数 创建出来的表结构
CREATE TABLE test1( d1 DECIMAL, d2 DECIMAL(5,2) );
插入数据查看默认和设置的区别
INSERT INTO test1(d1,d2) VALUE(3.14,3.14)
这里插入数据都时候会有警告信息 提示你 d1 被截断了,因为默认的数据 小数点为0
这个时候我们查看数据 会发现 d1 只有3 d2 有 3.14
SELECT * FROM test1
这里 定点数类型的特性在脑袋里已经有了一个清晰的认识
以往sql的使用 很少接触 这是我第一次接触定点数 这里确实是学到了新的东西
小结
float和double 在不指定精度的情况话会按照计算机操作系统默认的精度表示。DECIMAL不指定精度的时候 默认是DECIMAL(10,0)
数据类型长度一定的时候,浮点数能够表示数据范围更大,但是浮点数会引起精度问题,不适合储存高精度数据