MySQL数据类型DECIMAL用法
MySQL DECIMAL
数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL
数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
要定义数据类型为DECIMAL
的列,请使用以下语法:
decimal(M,D)
它有两个参数,M也代表总位数,D也代表小数后面的位数,他是把小数点前小数点后分开为2个整形来存储的,所以不会有损失,所以他叫定点型。
P
是表示有效数字数的精度。P
范围为1〜65
。D
是表示小数点后的位数。D
的范围是0
~30
。MySQL要求D
小于或等于(<=
)P
。
DECIMAL(P,D)
表示列可以存储D
位小数的P
位数。十进制列的实际范围取决于精度和刻度。
与INT数据类型一样,DECIMAL
类型也具有UNSIGNED
和ZEROFILL
属性。 如果使用UNSIGNED
属性,则DECIMAL UNSIGNED
的列将不接受负值。
如果使用ZEROFILL
,MySQL将把显示值填充到0
以显示由列定义指定的宽度。 另外,如果我们对DECIMAL
列使用ZERO FILL
,MySQL将自动将UNSIGNED
属性添加到列。
以下示例使用DECIMAL
数据类型定义的一个叫作amount
的列。
下面我们就来实操:
创建表:
mysql> create table de( -> de decimal(9,2))charset =utf8; Query OK, 0 rows affected (0.15 sec)
表我们已经创建成功了。
我们再来查看一下表的结构:
mysql> desc de; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | de | decimal(9,2) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 1 row in set (0.01 sec)
我们可以发现有一个de列他的属性正式我们需要的decimal,我们给他设置了属性为(9,2)。
他的意思就是我们小数点前面最多只能存7位数字,小数点后面只能存2位,他的总位数为9位。
下面我们就来给他插入数据:
mysql> insert into de(de) values(1111111.11); Query OK, 1 row affected (0.00 sec)
这里我们插入的是1111111.11它提示插入成功了,好,我们再插入一个数据
mysql> insert into de(de) values(11111111.11); Query OK, 1 row affected, 1 warning (0.00 sec)
这次我们插入1111111.11他还是提示插入成功,可以发现这里的总位数已经超过9位,他怎么会插入成功呢?
好,下面我们就把它查询出来看看:
mysql> select * from de; +------------+ | de | +------------+ | 1111111.11 | | 9999999.99 | +------------+ 2 rows in set (0.00 sec)
可以发现我们刚刚插入的1111111.11他自动转换为9999999.99了这是为什么?因为我们设置了decimal他的属性为(9,2),所以他只能存入小数点前和后总共9位数的数字,这里他自动就给他转换了,最大就是9999999.99了。