【MYSQL】金额(金钱)相关的数据存储类型

int

对于游戏币等代币,一般存储为int类型是可行的。

问题在于越界,int类型长度为11位。

在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。

Decimal

Decimal为专门为财务相关问题设计的数据类型。

DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认 值是10。

·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。

说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

如DECIMAL(5,2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。

能够解决数据的范围和精度的问题。

总结

这两种方式都是可行的解决方案,我们可以根据具体情况使用合适的方案。

参考资料

  • http://www.linuxidc.com/Linux/2013-07/88032.htm
  • http://baike.baidu.com/link?url=_JyEhjEYAYW2TOzncRKUMCBlEH77UjO6hEIAwIGCDMBQSon-JsUmoxkSRRVnnbEf40aoqWerVdqsWN97MVgLGq

你可能感兴趣的:(【MYSQL】金额(金钱)相关的数据存储类型)