数据库数据类型decimal理解【记录】
一、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理解【记录】相关推荐
- 数据库数据类型decimal理解
MySQL DECIMAL数据类型用于在数据库中存储精确的数值. 例如语法:column_name DECIMAL(P,D) 其中P表示的是有效数字的位数,D表示是小数的位数,D小于或等于P. 理解可 ...
- 数据库字段类型DECIMAL理解
column_name DECIMAL(E,P);E是有效数字的精度,P表是小数点位数 对于数据类型decimal这篇文章写的很直观明了,我参考他的做了测试,完全没问题. 原文:https://blo ...
- ORACLE数据库数据类型
Oracle的数据类型 Oracle的数据类型分为标量(Scalar)类型.复合(Composite)类型.引用(Reference)类型和LOB(Large Object)类型4种类型. 因为标量类 ...
- SQL sever 数据库数据类型
在设计程序和编写程序中信息和数据都是存放在数据库中的 那么什么属于数据 数字 属于数据的一种,文字 属于数据的一种,影剧 属于数据的一种,照片 属于数据的一种 数据包含了数字.文字.影剧.照片---- ...
- 数据库拆分的理解和案例(详细版)
数据库拆分的理解和案例 1 数据库拆分过程及挑战 1.1 垂直拆分 1.2 读写分离 1.3 分库分表 挑战1:基本的数据库增删改功能 挑战2:分布式id 挑战3:分布式事务 挑战4:动态扩容 2 主 ...
- Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别
Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别 概念 索引是帮助Mysql搞笑获取数据的数据结构 对Mysql数据库来讲,其核心就是存储引擎,而索引就是属于存储引擎级别的概念,不同的存储引擎对 ...
- 2021软考数据库工程师复习笔记记录
计算机的硬件基础知识 1.cpu: 运算器 : 掌握!!☆☆☆ ALU算数逻辑单元:处理数据 AC累加寄存器:提供一个工作区 DR数据缓冲寄存器:暂时存放指令 PSW状态条件寄存器. 速记:运算加缓状 ...
- 数据库到底如何理解呢
在互联网横行的时代,我们都知道得数据者得天下. 工作中我们一直说数据库,话说过来数据库到底是什么呢? 大家可能会想到 MySql.PostgreSql......可能大家还会想到Redis.Mongo ...
- MySQL数据库数据类型概述
MySQL数据库数据类型概述 MySQL数据类型官方文档 https://dev.mysql.com/doc/refman/8.0/en/data-types.html ,在此选择常用的简要总结介绍. ...
最新文章
- 中北大学c语言程序设计作业答案,2016年中北大学软件学院程序设计基础考研复试题库...
- nginx的HTTP模块编写
- hdu 4454 Stealing a Cake(三分之二)
- python socket服务器多线程_Python多线程socket服务器端
- 小程序执行运行过程原理_PLC的基础小知识!不用把PLC想的太难
- java linkedhashset_java之LinkedHashSet
- 浅谈 Kubernetes 服务发现
- 03-11 Android 纯 web 页面测试
- eclipse添加maven配置
- Android坡度计
- lvds输入悬空_LVDS的接口电路设计
- Arduino蓝牙无线自动下载程序
- SASS与 PASS的基本定义、适用范围以及差异
- m7405d粉盒清零方法_联想各种打印机多功能一体机硒鼓清零方法汇总
- imx6ull boot 启动
- 专题:手把手学习硬件基础------10、常用器件
- PHP实现 美化 打赏点 金额 换算
- 空间三点定圆的解算过程
- python的ogr模块_GDAL python教程(1)——用OGR读写矢量数据
- mapi java_Exchange 2010 - Exchange MAPI连接问题
热门文章
- AP宏观经济学真题解析
- git将远程分支回退到相应版本
- java trackid_TrackIdUtil.java
- 红米android4.44usb调试,红米2A高配版降级4.4.4以及xposed框架安装0001.docx
- 计算机控制技术试题a卷,2011年下广陵学院《计算机控制技术》考试卷(A)
- 国产数据库清单;微盟《生产环境和数据恢复》;TiDB招聘;Oracle备份还原指南、GaussDB性能调优指南……墨天轮数据库周刊-第5期
- 软件需求规格说明书-大马猴队
- 卷积核权值初始化_CNN怎么自定义卷积核初始值?
- bash awk 操作
- 实现车辆检测+安全算法,玩转智慧交通AI应用!AidLux实战训练营第二期圆满收官