MySQL DECIMAL数据类型用于在数据库中存储精确的数值。对于保持精确精度的列,我们通常使用十进制数据类型,比如会计系统中的货币数据。
要定义数据类型为DECIMAL的列,请使用以下语法:
column_name DECIMAL(P,D);在上面的语法中:
p是有效数字的精度。p的范围是1到65。d表示小数点后的位数。d的范围是0到30。MySQL D要求小于等于(=) p,DECIMAL(P,D)表示该列最多可以存储D位小数的P位数字。小编的实际范围取决于精度和刻度。
除了DECIMAL关键字,您还可以使用DEC、FIXED或NUMERIC,因为它们与DECIMAL同义。
与INT数据类型一样,DECIMAL类型也有UNSIGNED和ZEROFILL属性。如果我们使用UNSIGNED属性,定义为DECIMAL UNSIGNED的列将不接受负值。
使用ZEROFILL,MySQL用0填充显示值,直到列定义了指定的显示宽度。此外,如果将ZEROFILL用于DECIMAL列,MySQL会自动将无符号属性添加到该列中。
以下示例使用DECIMAL数据类型定义amount列。
金额小数(6,2);在本例中,金额列可以存储6位数字(2个小数位);因此,金额列的范围从9999.99到-9999.99。
MySQL允许我们使用以下语法:
column_name小数(P);这相当于:
column_name DECIMAL(P,0);在此示例中,列不包含小数部分或小数点。
此外,我们甚至可以使用下面的语法。
column _ name DECIMAL在这种情况下,p的默认值是10。
小数存储MySQL分别为整数部分和小数部分分配存储空。使用MySQL二进制格式存储十进制值。它将九个数字压缩成四个字节。
对于每个部分,每9个数字需要4个字节来存储。下表显示了剩余数字所需的存储空间:
其余的数字
字节数
1–2
一个
3–4
2
5–6
三
7–9
四
比如DECIMAL(19,9)的小数部分是9位数,整数部分是19-9=10位数。小数部分需要4个字节。整数的前9位需要4个字节,剩下的1位需要1个字节。DECIMAL(19,9)列总共需要9个字节。
DECIMAL数据类型示例首先,创建一个名为materials的新表,该表包含三列:id、description和cost。
创建表材料(id INT AUTO_INCREMENT主键,description VARCHAR(255),cost DECIMAL(19,4)NOT NULL);其次,在材料表中插入数据。
插入到材料(描述,成本)值( # 39;自行车 # 39;, 500.34),(#39;Seat # 39,10.23),(#39;Break # 39,5.21);第三,从材料表中查询数据。
SELECT *FROM materials;从材料中选择*;
第四,更改成本列以包含ZEROFILL属性。
更改表格材料修改成本小数(19,4)零填充;再次查询材料表。
SELECT *FROM materials;从材料中选择*;
如您所见,我们在输出值中填充了许多零。