mysql 建表时的价格用什么类型定义?
晓璐233414675
2024-06-01 03:08:25
最佳回答
mysql中可以用来做价格的字段一般有float、double、decimal
如定义一个money字段类型为float(9,2),则money字段最大长度为9,整数位是6位,小数位是2位。以下摘自mysql 5.1参考手册:
1、float[(m,d)][unsigned][zerofill]
小(单精度)浮**。允许的值是-3.**6e+38到-1.**1e-38、0和1.**1e-38到3.**6e+38。这些是理论限制,基于ieee标准。实际的范围根据硬件或操作系统的不同可能稍微小些。m是小数总位数,d是小数点后面的位数。如果m和d被省略,根据硬件允许的限制来保存值。单精度浮**精确到大约7位小数位。如果指定unsigned,不允许负值。使用浮**可能会遇到意想不到的问题,因为在mysql中的所有计算用双精度完成。参见a.5.7节,“解决与不匹配行有关的问题”。2、double[(m,d)][unsigned][zerofill]
普通大小(双精度)浮**。允许的值是-1.**3157e+308到-2.**2014e-308、0和2.**2014e-308到 1.**3157e+308。这些是理论限制,基于ieee标准。实际的范围根据硬件或操作系统的不同可能稍微小些。m是小数总位数,d是小数点后面的位数。如果m和d被省略,根据硬件允许的限制来保存值。双精度浮**精确到大约15位小数位。如果指定unsigned,不允许负值。3、double prec**ion[(m,d)][unsigned][zerofill],real[(m,d)][unsigned][zerofill]
为double的同义词。除了:如果sql服务器**包括real_as_float选项,real是float的同义词而不是double的同义词。4、float(p)[unsigned][zerofill]
浮**。p表示精度(以位数表示),但mysql只使用该值来确定是否结果列的数据类型为float或double。如果p为从0到24,数据类型变为没有m或d值的float。如果p为从25到53,数据类型变为没有m或d值的double。结果列范围与本节前面描述的单精度float或双精度double数据类型相同。float(p)语法与odbc兼容。5、decimal[(m[,d])][unsigned][zerofill]
压缩的“严格”定**。m是小数位数(精度)的总数,d是小数点(标度)后面的位数。小数点和(负数)的‘-’符号不包括在m中。如果d是0,则值没有小数点或分数部分。decimal整数最大位数(m)为65。支持的十进制数的最大位数(d)是30。如果d被省略,默认是0。如果m被省略,默认是10。如果指定unsigned,不允许负值。所有decimal列的基本计算(+,-,*,/)用65位精度完成。6、dec[(m[,d])][unsigned][zerofill],numeric[(m[,d])][unsigned][zerofill],fixed[(m[,d])][unsigned][zerofill]
是decimal的同义词。fixed同义词适用于与其它服务器的兼容性。 20210311