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
属性。