MySQL数据类型中DECIMAL的用法实例详解

 更新时间:2017年10月20日 10:52:30   投稿:lqh  
这篇文章主要介绍了MySQL数据类型中DECIMAL的用法实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

MySQL数据类型中DECIMAL的用法实例详解

在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法。

一般赋予浮点列的值被四舍五入到这个列所指定的十进制数。如果在一个FLOAT(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2。如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3 4 6。

这表示应该定义具有足够位数的浮点列以便得到尽可能精确的值。如果想精确到千分之一,那就不要定义使该类型仅有两位小数。

浮点值的这种处理在MySQL3.23 中有例外,FLOAT(4) 和FLOAT(8) 的性能有所变化。这两种类型现在为单精度( 4 字节)和双精度( 8 字节)的类型,在其值按给出的形式存放(只受硬件的限制)这一点上说,这两种类型是真浮点类型。

DECIMAL 类型不同于FLOAT和DECIMAL,其中DECIMAL 实际是以串存放的。DECIMAL 可能的最大取值范围与DOUBLE 一样,但是其有效的取值范围由M 和D 的值决定。如果改变M 而固定D,则其取值范围将随M 的变大而变大。表2 - 7的前三行说明了这一点。如果固定M 而改变D,则其取值范围将随D 的变大而变小(但精度增加)。表2 - 7的后三行说明了这一点。

给定的DECIMAL 类型的取值范围取决于MySQL数据类型的版本。对于MySQL3.23 以前的版本,DECIMAL(M, D) 列的每个值占用M 字节,而符号(如果需要)和小数点包括在M 字节中。因此,类型为DECIMAL(5, 2) 的列,其取值范围为-9.99 到9 9 . 9 9,因为它们覆盖了所有可能的5 个字符的值。

正如MySQL3.23 一样,DECIMAL 值是根据ANSI 规范进行处理的, ANSI 规范规定DECIMAL(M, D) 必须能够表示M 位数字及D 位小数的任何值。

例如, DECIMAL(5, 2) 必须能够表示从-999.99 到999.99 的所有值。而且必须存储符号和小数点,因此自MySQL3.23以来DECIMAL 值占M + 2 个字节。对于DECIMAL(5, 2),“最长”的值(- 9 9 9 . 9 9)需要7个字节。

在正取值范围的一端,不需要正号,因此MySQL数据类型利用它扩充了取值范围,使其超过了ANSI 所规范所要求的取值范围。如DECIMAL(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。

简而言之,在MySQL3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于更早版本中的DECIMAL(M + 2, D) 的取值范围。在MySQL数据类型的所有版本中,如果某个DECIMAL 列的D 为0,则不存储小数点。这样做的结果是扩充了列的取值范围,因为过去用来存储小数点的字节现在可用来存放其他数字了。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 浅谈mysql导出表数据到excel关于datetime的格式问题

    浅谈mysql导出表数据到excel关于datetime的格式问题

    这篇文章主要介绍了浅谈mysql导出表数据到excel关于datetime的格式问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • mysql ON DUPLICATE KEY UPDATE语句示例

    mysql ON DUPLICATE KEY UPDATE语句示例

    本文介绍一下关于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法
    2013-11-11
  • mysql error 1071: 创建唯一索引时字段长度限制的问题

    mysql error 1071: 创建唯一索引时字段长度限制的问题

    这篇文章主要介绍了mysql error 1071: 创建唯一索引时字段长度限制的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • MySQL8安装Installer版的图文教程

    MySQL8安装Installer版的图文教程

    这篇文章主要介绍了MySQL8安装Installer版的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Mysql 查询JSON结果的相关函数汇总

    Mysql 查询JSON结果的相关函数汇总

    这篇文章主要介绍了Mysql 查询 JSON 结果的相关函数汇总,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL自带慢日志排查慢查询SQL

    MySQL自带慢日志排查慢查询SQL

    昨天有一道笔试题是问mysql慢查询的,总结一下,下面这篇文章主要给大家介绍了关于MySQL如何利用自带慢日志排查慢查询SQL的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • MySQL查看日志简单易懂保姆级教程

    MySQL查看日志简单易懂保姆级教程

    这篇文章主要给大家介绍了关于MySQL查看日志简单易懂保姆级教程的相关资料,在操作MySQL数据库的时候会留下每一个步骤的痕迹,那怎么查看呢?就可以用日志去查看,需要的朋友可以参考下
    2023-08-08
  • MySQL中CURRENT_TIMESTAMP时间戳的使用详解

    MySQL中CURRENT_TIMESTAMP时间戳的使用详解

    这篇文章主要给大家介绍了关于MySQL中CURRENT_TIMESTAMP时间戳的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • MySQL批量SQL插入性能优化详解

    MySQL批量SQL插入性能优化详解

    这篇文章主要为大家详细介绍了MySQL批量SQL插入性能优化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • MySQL 删除大表的性能问题解决方案

    MySQL 删除大表的性能问题解决方案

    MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL hang的时间,本为将提供详细的解决方案,需要了解的朋友可以参考下
    2012-11-11

最新评论