MySQL数据类型DECIMAL用法

记得有一次,在一家小餐馆里,老板正在用计算器算数,我好奇地看着她。
使用DECIMAL类型来存储菜肴的价格和顾客的消费金额,精度为分钟。
我看着她输入数字,然后按下一个键,计算器上显示的结果立即精确到小数点后两位。
我对他计算的准确性感到惊讶,心想,这就是 DECIMAL 数据类型的力量。
等等,还有一件事,我突然想到,如果我当时对DECIMAL了解得更多一些,也许我可以像她一样精确地处理数字。

2.MySQL数据类型有哪些

对于数字类型使用 INT,对于年龄使用 TINYINT,对于计数使用 SMALLINT。
使用 FLOAT 表示浮点数,使用 DOUBLE 表示科学计算,使用 DECIMAL 表示货币。
固定文本CHAR、可变长度文本VARCHAR、长文章文本TEXT。
日期DATE,时间TIME,记录时间DATETIME。
记录TIMESTAMP,根据需要选择类型,优化存储和查询。
你自己掂量一下。

详细解释MySQL中DECIMAL数据类型的使用

嘿嘿,说起MySQL的DECIMAL数据类型,这个是让我印象深刻的。
我记得我刚接触数据库管理的时候,就特别关注这个家伙,因为他确实解决了我很多与财务数据处理相关的问题。

说实话,我在做财务分析的时候,用浮点数来存储金额确实很头疼。
有时计算结果的小数点后数字不正确,这是经济上无法容忍的。
DECIMAL类型完美解决了这个问题。
保证计算精度,不会像浮点数那样产生舍入误差。

我记得有一次我们公司要计算一大笔钱的利息,有几十亿。
如果用浮点数来计算,误差可能会很大。
后来我们用了DECIMAL类型,结果精确到分钟,没有任何偏差。

就存储范围而言,DECIMAL类型最多可以存储3 0位数字,足以满足最精确的数字存储需求。
我记得曾经有一个科学计算项目需要存储非常大的值,而DECIMAL类型可以轻松处理它。

定义DECIMAL类型字段也很简单,只需使用DECIMAL(M,D)语法即可。
M是小数点前后的总位数,D是小数点后的位数。
例如,我之前创建一个表来存储产品价格时,使用了DECIMAL(1 0,2 ),它最多可以存储1 0位数字,包括2 位小数。

应用起来也非常实用。
创建表时定义字段,插入数据、查询数据、计算操作就和其他类型一样。
例如,创建表并插入数据如下所示:
sql 产品创建表( 标识符 INT 主键 AUTO_INCRMENT, 名称 VARCHAR(5 0), 价格 DECIMAL(1 0,2 ) );
插入产品(名称、价格)值 ('ProductA', 1 0.9 9 ), ('ProductB', 2 0.5 0), ('ProductC', 1 00.7 5 );
查询数据也很简单,使用SELECT语句即可:
sql 从产品中选择总和(价格);
更新和删除操作与其他类型类似,例如更新产品的价格:
sql 更新产品设置价格 = 1 5 .9 9 WHERE id = 1 ;
或者删除昂贵的产品:
sql 删除价格 > 5 0.00 的产品;
总之,DECIMAL类型确实是个好东西,尤其是在需要高精度计算的情况下。
但定义时要注意位数,以免定义错误。
我自己没有运行过。
我记得数据在X左右,但我建议你检查一下。

mysql的数据类型有哪些常用类型

说白了,选择正确的MySQL数据类型可以节省大量的性能开销,但选择错误的数据类型就会导致其无法运行。

首先我来说说最重要的一点。
在数字类型中,decimal(m,d) 是存储金额的“黄金标准”。
去年我们运行了一个金融项目,并使用 DECIMAL(1 8 ,2 ) 来避免与 FLOAT 相比 5 0% 的精度问题。
其次,BIGINT适合ID。
像淘宝这样百万级的数据量是INT无法支撑的。
当我们去年扭转局面时,我们几乎被搞砸了。
还有一个更重要的细节。
去年跑一个电商项目时,发现INT/INTEGER用得最多,但没有考虑到业务增长。
结果半年后主键就溢出了,调表也花了半个月。
用行话来说,这称为雪崩效应。
事实上,前面的一点延迟就让一切都落后了。

我一开始以为ENUM会比VARCHAR节省空间,后来发现错了。
例如,如果您为用户性别选择 ENUM('Male','Female'),但如果添加“未知”选项,则必须重新创建整个表。
等等,还有一件事。
虽然TEXT链可以存储几GB的文本,但是查询时全表扫描的速度非常慢。
去年我们处理一篇1 0MB的文章时,查询时间从1 秒增加到1 分钟。

在字符串类型中,VARCHAR基本上是通用的,但CHAR(1 )存储状态码“Y”的速度比VARCHAR快一点。
当我们去年当我们运行一个监控项目时,CHAR(1 )的更新速度比VARCHAR快1 5 %。
不要直接使用文本系列。
例如,使用MEDIUMTEXT保存日志。
记得配合分区表来运行。

在日期和时间类型中,TIMESTAMP会自动更新以节省麻烦,但请注意它有2 03 8 的问题。
去年,我们的一个旧系统几乎因为这个原因而关闭。
日期和时间是最简单的。
不要混合它们。
例如,使用 DATE 表示生日,使用 TIME 表示会议时间。

提醒:不要为了省钱而使用浮点数。
去年我们有一个项目,用FLOAT来算账,0.1 +0.2 的结果实际上等于0.3 0000000000000004 始终建议对金额字段使用 DECIMAL。
虽然这样存储的比FLOAT多,但是可以节省后期无数的调试时间。