MySQL DECIMAL 数据类型介绍

DECIMAL 是一种 MySQL 数据类型,用于存储精确数值。在处理货币和其他需要高精度计算的数据时非常有用。

语法

DECIMAL(M,D)
  • M:表示总的数字位数,即整数部分和小数部分的位数之和。
  • D:表示小数点后的位数。

例如, DECIMAL(10,2) 表示最多有 10 个数字,其中 2 个数字在小数点后面。因此,最大值为 99999999.99,最小值为 -99999999.99。

使用场景

DECIMAL 类型通常用于存储货币金额和百分比等需要高精度计算的数据。由于浮点数精度问题,不推荐在这些情况下使用 FLOATDOUBLE 数据类型。

示例

示例 1:存储货币金额

假设要存储一个订单的总金额,其中包含货币符号和小数点,可以使用 DECIMAL 数据类型:

CREATE TABLE orders (
  id INT PRIMARY KEY,
  total_amount DECIMAL(10,2)
);

INSERT INTO orders VALUES (1, 99.99);
INSERT INTO orders VALUES (2, 499.50);
INSERT INTO orders VALUES (3, 1099.00);

查询语句:

SELECT * FROM orders;

结果:

+----+--------------+
| id | total_amount |
+----+--------------+
|  1 |        99.99 |
|  2 |       499.50 |
|  3 |      1099.00 |
+----+--------------+

示例 2:存储百分比

假设要存储一个销售团队的完成率,可以使用 DECIMAL 数据类型:

CREATE TABLE sales_team (
  id INT PRIMARY KEY,
  completion_rate DECIMAL(5,2)
);

INSERT INTO sales_team VALUES (1, 80.50);
INSERT INTO sales_team VALUES (2, 100.00);
INSERT INTO sales_team VALUES (3, 50.00);

查询语句:

SELECT * FROM sales_team;

结果:

+----+-----------------+
| id | completion_rate |
+----+----------------+
|  1 |           80.50 |
|  2 |          100.00 |
|  3 |           50.00 |
+----+-----------------+

结论

DECIMAL 类型适用于需要高精度计算的情况,如货币和百分比。它可以保证精确性,避免由于浮点数精度问题而导致的计算错误。