MySQL技术大全读书笔记:MySQL数据类型【定点数类型】

x33g5p2x  于2021-11-22 转载在 Mysql  
字(0.8k)|赞(0)|评价(0)|浏览(579)

MySQL技术大全

前言 新开书籍笔记专栏:快来一起深耕技术吧

包着 阅读优秀开发书籍,提升自己对数据库的技术深度的心态 。
MySQL技术大全 跟着冰河大佬的这本书 重新回顾一遍mysql的知识。
相信每一次学习都会有新的细节。这个专栏就专门用来存放学习是记录都一些笔记,
篇幅不会太长,但是会不间断持续更新。

第三阶段 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)
  • 数据类型长度一定的时候,浮点数能够表示数据范围更大,但是浮点数会引起精度问题,不适合储存高精度数据

相关文章