Documentation Home
MySQL 8.0 参考手册  / 第 11 章数据类型  / 11.1 数值数据类型  /  11.1.3 定点类型(精确值)——DECIMAL、NUMERIC

11.1.3 定点类型(精确值)——DECIMAL、NUMERIC

DECIMALNUMERIC 类型存储精确的数字数据值 。当保持精确的精度很重要时使用这些类型,例如货币数据。在 MySQL 中,NUMERIC实现为DECIMAL,因此以下关于 的说明DECIMAL同样适用于 NUMERIC

MySQLDECIMAL以二进制格式存储值。请参阅第 12.22 节,“精度数学”

DECIMAL列声明中,可以(并且通常)指定精度和小数位数。例如:

salary DECIMAL(5,2)

在此示例中,5是精度, 2是比例。精度表示为值存储的有效位数,小数位数表示小数点后可以存储的位数。

标准 SQL 要求DECIMAL(5,2)能够存储任何具有五位数字和两位小数的值,因此可以存储在salary 列范围从-999.99999.99.

在标准 SQL 中,语法 等同于 . 类似地,语法等同于,其中允许实现决定 的值 。MySQL 支持这两种语法形式。默认值为10。 DECIMAL(M)DECIMAL(M,0)DECIMALDECIMAL(M,0)MDECIMALM

如果小数位数为 0,则DECIMAL值不包含小数点或小数部分。

的最大位数为DECIMAL65,但给定列的实际范围DECIMAL 可能受给定列的精度或小数位数限制。当为此类列分配的值的小数点后位数超过指定比例所允许的位数时,该值将转换为该比例。(精确的行为是特定于操作系统的,但通常效果是截断到允许的位数。)