一、MYSQL数据类型DECIMAL用法:

1、DECIMAL是MySQL中存在的精准数据类型,以字符串的形式保存精确的原始数值,而float,double则是非精准类型,在DB中保存的是近似值。

例如语法:column_name DECIMAL(P,D)

  • P是表示有效数字数的精度。 P范围为1〜65。
  • D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。

当数值在其取值范围之内,小数位多了,则四舍五入后直接截断多出的小数位。

若数值在其取值范围之外,则直接报Out of range value错误。

DECIMAL(P,D)表示列可以存储D位小数的P位数。
十进制列的实际范围取决于精度和刻度。

与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZEROFILL属性。 如果使用UNSIGNED属性,则DECIMAL UNSIGNED的列将不接受负值。

如果使用ZEROFILL,MySQL将把显示值填充到0以显示由列定义指定的宽度。 另外,如果我们对DECIMAL列使用ZEROFILL,MySQL将自动将UNSIGNED属性添加到列。

2、以下示例中使用DECIMAL数据类型定义一个amount的列:mysql amount DECIMAL(6,2);

  • 在此示例中,amount列最多可以存储6位数字,小数位数为2位;
  • 因此,amount列的范围是从-9999.99到9999.99。

3、MySQL允许使用以下语法:

  • mysql column_name DECIMAL(P);
  • 这相当于:mysql column_name DECIMAL(P,0);
  • 在这种情况下,列不包含小数部分或小数点。

此外,我们甚至可以使用以下语法:

  • mysql column_name DECIMAL;
  • 在这种情况下,P的默认值为10。

二、MYSQL DECIMAL存储:

MySQL分别为整数和小数部分分配存储空间。 MySQL使用二进制格式存储DECIMAL值。它将9位数字包装成4个字节。

对于每个部分,需要4个字节来存储9位数的每个倍数。剩余数字所需的存储如下表所示:

剩余数字
0 0
1-2 1
3-4 2
5-6 3
7-9 4

例如,DECIMAL(19,9)

  • 对于小数部分具有9位数字,对于整数部分具有19位-9位=10位数字,对照上表小数部分需要4个字节。
  • 整数部分对于前9位数字需要4个字节,1个剩余字节需要1个字节。DECIMAL(19,9)列总共需要9个字节。

三、MySQL DECIMAL数据类型和货币数据:

经常使用DECIMAL数据类型的货币数据,如价格,工资,账户余额等。如果要设计一个处理货币数据的数据库,则可参考以下语法:mysql amount DECIMAL(19,2);

但是,如果您要遵守公认会计原则(GAAP)规则,则货币栏必须至少包含4位小数,以确保舍入值不超过$0.01。
在这种情况下,应该定义具有4位小数的列,如下所示:mysql amount DECIMAL(19,4);

四、MySQL DECIMAL数据类型示例:参考文章

首先,创建一个名为test_order的新表,其中包含三列:id,description和cost。

CREATE TABLE test_order (id INT AUTO_INCREMENT PRIMARY KEY,description VARCHAR(255),cost DECIMAL(19,4) NOT NULL
);

第二步,将资料插入test_order表。

INSERT INTO test_order(description,cost)
VALUES('Bicycle', 500.34),('Seat',10.23),('Break',5.21);

第三步,从test_order表查询数据。

SELECT * from test_order;

查询结果:

第四步,更改cost列以包含ZEROFILL属性。

ALTER TABLE test_order
MODIFY cost DECIMAL(19,4) zerofill;

第五步,再次查询test_order表。

SELECT * from test_order;

查询结果:

如上所见,在输出值中填充了许多零。

因为zerofill,当我们插入负值会报错:

INSERT INTO test_order(description,cost)
VALUES('test', -100.11);
<br>提示:
[SQL]INSERT INTO test_order(description,cost)
VALUES('test', -100.11)[Err] 1264 - Out of range value for column 'cost' at row 1

数据库数据类型decimal理解【记录】相关推荐

  1. 数据库数据类型decimal理解

    MySQL DECIMAL数据类型用于在数据库中存储精确的数值. 例如语法:column_name DECIMAL(P,D) 其中P表示的是有效数字的位数,D表示是小数的位数,D小于或等于P. 理解可 ...

  2. 数据库字段类型DECIMAL理解

    column_name DECIMAL(E,P);E是有效数字的精度,P表是小数点位数 对于数据类型decimal这篇文章写的很直观明了,我参考他的做了测试,完全没问题. 原文:https://blo ...

  3. ORACLE数据库数据类型

    Oracle的数据类型 Oracle的数据类型分为标量(Scalar)类型.复合(Composite)类型.引用(Reference)类型和LOB(Large Object)类型4种类型. 因为标量类 ...

  4. SQL sever 数据库数据类型

    在设计程序和编写程序中信息和数据都是存放在数据库中的 那么什么属于数据 数字 属于数据的一种,文字 属于数据的一种,影剧 属于数据的一种,照片 属于数据的一种 数据包含了数字.文字.影剧.照片---- ...

  5. 数据库拆分的理解和案例(详细版)

    数据库拆分的理解和案例 1 数据库拆分过程及挑战 1.1 垂直拆分 1.2 读写分离 1.3 分库分表 挑战1:基本的数据库增删改功能 挑战2:分布式id 挑战3:分布式事务 挑战4:动态扩容 2 主 ...

  6. Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别

    Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别 概念 索引是帮助Mysql搞笑获取数据的数据结构 对Mysql数据库来讲,其核心就是存储引擎,而索引就是属于存储引擎级别的概念,不同的存储引擎对 ...

  7. 2021软考数据库工程师复习笔记记录

    计算机的硬件基础知识 1.cpu: 运算器 : 掌握!!☆☆☆ ALU算数逻辑单元:处理数据 AC累加寄存器:提供一个工作区 DR数据缓冲寄存器:暂时存放指令 PSW状态条件寄存器. 速记:运算加缓状 ...

  8. 数据库到底如何理解呢

    在互联网横行的时代,我们都知道得数据者得天下. 工作中我们一直说数据库,话说过来数据库到底是什么呢? 大家可能会想到 MySql.PostgreSql......可能大家还会想到Redis.Mongo ...

  9. MySQL数据库数据类型概述

    MySQL数据库数据类型概述 MySQL数据类型官方文档 https://dev.mysql.com/doc/refman/8.0/en/data-types.html ,在此选择常用的简要总结介绍. ...

最新文章

  1. 中北大学c语言程序设计作业答案,2016年中北大学软件学院程序设计基础考研复试题库...
  2. nginx的HTTP模块编写
  3. hdu 4454 Stealing a Cake(三分之二)
  4. python socket服务器多线程_Python多线程socket服务器端
  5. 小程序执行运行过程原理_PLC的基础小知识!不用把PLC想的太难
  6. java linkedhashset_java之LinkedHashSet
  7. 浅谈 Kubernetes 服务发现
  8. 03-11 Android 纯 web 页面测试
  9. eclipse添加maven配置
  10. Android坡度计
  11. lvds输入悬空_LVDS的接口电路设计
  12. Arduino蓝牙无线自动下载程序
  13. SASS与 PASS的基本定义、适用范围以及差异
  14. m7405d粉盒清零方法_联想各种打印机多功能一体机硒鼓清零方法汇总
  15. imx6ull boot 启动
  16. 专题:手把手学习硬件基础------10、常用器件
  17. PHP实现 美化 打赏点 金额 换算
  18. 空间三点定圆的解算过程
  19. python的ogr模块_GDAL python教程(1)——用OGR读写矢量数据
  20. mapi java_Exchange 2010 - Exchange MAPI连接问题

热门文章

  1. AP宏观经济学真题解析
  2. git将远程分支回退到相应版本
  3. java trackid_TrackIdUtil.java
  4. 红米android4.44usb调试,红米2A高配版降级4.4.4以及xposed框架安装0001.docx
  5. 计算机控制技术试题a卷,2011年下广陵学院《计算机控制技术》考试卷(A)
  6. 国产数据库清单;微盟《生产环境和数据恢复》;TiDB招聘;Oracle备份还原指南、GaussDB性能调优指南……墨天轮数据库周刊-第5期
  7. 软件需求规格说明书-大马猴队
  8. 卷积核权值初始化_CNN怎么自定义卷积核初始值?
  9. bash awk 操作
  10. 实现车辆检测+安全算法,玩转智慧交通AI应用!AidLux实战训练营第二期圆满收官