MySQL 8.4 发行说明
DECIMAL
和 NUMERIC
类型存储精确的数值数据。当需要保留精确精度时(例如,用于货币数据)使用这些类型。在 MySQL 中,NUMERIC
被实现为 DECIMAL
,因此以下关于 DECIMAL
的说明同样适用于 NUMERIC
。
MySQL 以二进制格式存储 DECIMAL
值。请参阅 第 14.24 节,“精度数学”。
在 DECIMAL
列声明中,可以(通常也是)指定精度和小数位数。例如
salary DECIMAL(5,2)
在此示例中,5
是精度,2
是小数位数。精度表示为值存储的有效数字数量,小数位数表示可以在小数点后存储的数字数量。
标准 SQL 要求 DECIMAL(5,2)
能够存储任何具有五位数字和两位小数的值,因此可以在 salary
列中存储的值范围从 -999.99
到 999.99
。
在标准 SQL 中,语法 DECIMAL(
等效于 M
)DECIMAL(
。类似地,语法 M
,0)DECIMAL
等效于 DECIMAL(
,其中实现允许决定 M
,0)M
的值。MySQL 支持这两种 DECIMAL
语法变体形式。M
的默认值为 10。
如果小数位数为 0,则 DECIMAL
值不包含小数点或小数部分。
DECIMAL
的最大位数为 65,但给定 DECIMAL
列的实际范围可能受给定列的精度或小数位数限制。当将具有比指定小数位数允许的更多小数点后数字的值分配给此类列时,该值将转换为该小数位数。(精确行为是特定于操作系统的,但通常效果是截断到允许的数字位数。)