mysql中定义decimal类型的数,mysql中decimal的用法

mysql中定义decimal类型的数,mysql中decimal的用法,MySQL数据类型DECIMAL用法详解

本文主要介绍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的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

mysql中定义decimal类型的数,mysql中decimal的用法