本文主要介绍MySQL数据类型DECIMAL用法的详细讲解,通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们通常对保留精确精度的列使用DECIMAL数据类型,例如会计系统中的货币数据。
要定义数据类型为DECIMAL的列,请使用以下语法:
column_name DECIMAL(P,D);
在上面的语法中:
p是有效位数的精度。p的范围是165。
d是小数点后的位数。d的范围是0~30。MySQL D要求小于等于(=) p。
DECIMAL(P,d)表示一列可以存储d个小数位的P位数字。小数列的实际范围取决于精度和小数位数。
与INT数据类型一样,DECIMAL类型也有UNSIGNED和ZEROFILL属性。如果使用UNSIGNED属性,则DECIMAL UNSIGNED列不接受负值。
如果使用ZEROFILL,MySQL会将显示值填充为0,以显示列定义指定的宽度。此外,如果我们对DECIMAL列使用零填充,MySQL会自动将无符号属性添加到该列中。
以下示例使用由DECIMAL数据类型定义的名为amount的列。
金额小数(6,2);
在本例中,amount列最多可以存储6位数字,带2个小数位;因此,金额列的范围从-9999.99到9999.99。
MySQL允许以下语法:
column_name小数(P);
这相当于:
column_name DECIMAL(P,0);
在这种情况下,该列不包含小数部分或小数点。
此外,我们甚至可以使用下面的语法。
column _ name DECIMAL
在这种情况下,p的默认值是10。
MySQL DECIMAL存储
MySQL分别为整数和小数部分分配存储空间。使用MySQL二进制格式存储十进制值。它将9位数字打包成4个字节。
对于每个部分,需要4个字节来存储9位数的每个倍数。下表显示了剩余数字所需的存储空间:
剩余数字
地方
0
0
12
一个
34
2
56
三
7-9
四
比如DECIMAL(19,9)小数部分有9位数,整数部分有19位数=10位数,小数部分需要4个字节。整数部分前9位需要4个字节,剩下的1个字节需要1个字节。DECIMAL(19,9)列总共需要9个字节。
MySQL DECIMAL数据类型和货币数据
经常使用十进制数据类型的货币数据,如价格、工资、账户余额等。如果你想设计一个数据库来处理货币数据,你可以参考下面的语法
金额小数(19,2);
但是,如果您希望遵守GAAP规则,货币列必须包含至少4个小数位,以确保舍入值不超过0.01美元。在这种情况下,具有4个小数位的列应定义如下:
金额小数(19,4);
MySQL DECIMAL数据类型示例
首先,创建一个名为test_order的新表,它包含三列:id、description和cost。
创建表test_order(
id INT AUTO_INCREMENT主键
描述VARCHAR(255),
成本小数(19,4)不为空
);
其次,将数据插入test_order表。
插入测试订单(描述,成本)
值(自行车,500.34),(座位,10.23),(休息,5.21);
步骤3:从test_order表中查询数据。
从测试订单中选择*
查询结果:
第四步。更改“成本”列以包含“零填充”属性。
更改表测试顺序
修改成本小数(19,4)零填充;
第5步:再次查询test_order表。
从测试订单中选择*
查询结果:
如您所见,输出值中填充了许多零。
由于zerofill,当我们插入一个负值时,我们将报告一个错误:
插入测试订单(描述,成本)
值(测试,-100.11);
Br提示:
[SQL]插入测试订单(描述,成本)
值(测试,-100.11)
[Err] 1264 -第1行“成本”列的值超出范围
其他插入测试结论:
当数值在其取值范围内且小数位数较多时,多出来的小数位数四舍五入后直接截断。
如果该值超出其值的范围,它将直接报告值超出范围错误。
这就是本文对MySQL数据类型DECIMAL用法的详细解释。有关MySQL数据类型DECIMAL的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!