MySQL DECIMAL 类型介绍
在本文中,我们将带您了解 MySQL 中的定点数数据类型 DECIMAL。
在 MySQL 中, DECIMAL 数据类型是定点数数据类型,用来存储精确的树枝,比如账务金额等。底层实现上,MySQL 使用二进制形式存储该类型的值。
MySQL DECIMAL 语法
为了存储精确的数值,我们需要为 DECIMAL 数据类型指定总位数和小数位数。这里是 DECIMAL 数据类型的语法:
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
这里:
M是总的位数,不包含小数点和正负号。D是小数部分的位数。如果D为0则表示没有小数部分。当D省略时,默认值为0。UNSIGNED属性表示数值是无符号的。无符号的数字不能是负数。ZEROFILL属性表示当整数部分位数不足时,用整数的左侧用0填充。带有ZEROFILL的列将自动具有UNSIGNED属性。这和 INT 数据类型一样。
DEC,NUMERIC,FIXED是DECIMAL的同义词。
比如,我们定义了如下一个列:
amount DECIMAL(9, 4);
那么 amount 列的值的范围是从 -99999.9999 到 99999.9999。
比如,我们定义了如下一个列:
amount DECIMAL(9);
那么 amount 列的值的范围是从 -999999999 到 999999999。
MySQL DECIMAL 实例
首先,创建一个表 customer_balance,这个表有 3 列:id、name 和 balance。
CREATE TABLE customer_balance (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
balance DECIMAL(14, 4) NOT NULL
);
然后,插入数据到 materials 表中。
INSERT INTO customer_balance(name, balance)
VALUES ('Tim', 1500.04),
('Jim', 10000),
('Tom', 333333.4);
现在,让我们从 customer_balance 表中查询数据。
SELECT * FROM customer_balance;
+----+------+-------------+
| id | name | balance |
+----+------+-------------+
| 1 | Tim | 1500.0400 |
| 2 | Jim | 10000.0000 |
| 3 | Tom | 333333.4000 |
+----+------+-------------+最后,我们将更改 balance 列使其具有 ZEROFILL 属性。如下:
ALTER TABLE customer_balance
MODIFY balance DECIMAL(14, 4) ZEROFILL NOT NULL;
Query OK, 3 rows affected, 1 warning (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 1注意,输出告诉我们: 3 rows affected。
让我们再次查询表中的行。
SELECT * FROM customer_balance;
+----+------+-----------------+
| id | name | balance |
+----+------+-----------------+
| 1 | Tim | 0000001500.0400 |
| 2 | Jim | 0000010000.0000 |
| 3 | Tom | 0000333333.4000 |
+----+------+-----------------+这里,输出的数值的左侧用 0 填充了。
结论
在本文中,我们带您学习了 MySQL 中的定点数数据类型 DECIMAL。
DECIMAL数据类型可以用来表示很精确的数字。DECIMAL数据类型具有UNSIGNED和ZEROFILL属性。