‘壹’ 求银行客户数据库里的储存数据类型
首先要看银行用的数据库类型,是oracle、informix还是db2。一般建行用informix数据库居多。用户数据类型基本上用以下这几种:
帐号、姓名等 char
教育金额、余额等decimal
日期char(10)
交易流水号、int居多(或者long)
标志等char(1)
如果是其它数据库,参照对应的数据类型就可以了。
‘贰’ sqlserver 建数据库时表示时间,金额和重量的字段用什么数据类型好,有人说全用nvarchar因为好操作,求解
时间:DateTime
金额:money 或 numeric(18,2). numeric主要是方便定义小数位数,money限死了只有四位
重量: numeric , 不需要精度的就 numeric(12,0), 需要精度就 numer(30,n)
‘叁’ mysql存储金额类型,用什么数据类型比较可靠,一般企业数据用什么数据类型
对于游戏币等代币,一般存储为int类型是可行的。问题在于越界,int类型长度为11位。
在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。
Decimal:Decimal为专门为财务相关问题设计的数据类型。
DECIMAL从MySQL5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL5.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)的最大值为9999.99,因为有7个字节可用。能够解决数据的范围和精度的问题。
(3)数据库中余额用什么类型扩展阅读
MySQL数据类型DECIMAL用法:
MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
要定义数据类型为DECIMAL的列,请使用以下语法:column_nameDECIMAL(P,D);
在上面的语法中:
P是表示有效数字数的精度。P范围为1〜65。
D是表示小数点后的位数。D的范围是0~30。MySQL要求D小于或等于(<=)P。
DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。
与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZEROFILL属性。如果使用UNSIGNED属性,则DECIMALUNSIGNED的列将不接受负值。
如果使用ZEROFILL,MySQL将把显示值填充到0以显示由列定义指定的宽度。另外,如果我们对DECIMAL列使用ZEROFILL,MySQL将自动将UNSIGNED属性添加到列。
‘肆’ 【SQL】金额如果存在数据库中应该使用何种类型
在工作中发现原本系统中金额类型(int 10,存入数据库时乘100)已经不能满足当前需求,需要重新修改类型。于是像技术总监发起两次审批,但都被驳回了。第一次金额类型为 DECIMAL(32,8) , 第二次类型是 DECIMAL(10,2),之后技术总监说,你第一次的类型可能是对的,于是小彭百思不得其解,引发以下的灵魂三问......
为什么系统期初设置金额时要用 int 10 类型?
为什么两次审批都被驳回?
为什么后来技术总监又说第一次的可能是对的?
简单思考过后:小彭,大胆的推测了第一个问题,可能是当初设计数据结构时,认为金额精确到分即可,所以默认乘100 (保留两位小数)。但金额最大为 9千万元,是否真的能符合要求,回头还得再问问技术总监。这时,小彭又想到两个问题:
既然是保留小数了,为什么还要用 INT 类型呢?
如果说 FLOAT和 DOUBLE类型可能会存在精度问题,又为什么不用 DECIMAL类型呢?
经过查阅博客之后:小大概想通了第二个问题,第一次被驳回的原因是:DECIMAL类型在数据库中是根据传入的数值来决定存储的字节长度的,32明显过长会导致磁盘空间的浪费。而第二次则是走了另外一个极端:原本长度为10已经快要满足不了需求的了,如果再修改为同样的长度意义不大,还会引起后续再次修改类型的情况。
又结合系统反思了一下:大概明白了第三个问题,至于金额的长度其实是没有没有一个具体的标准的,要根据具体业务情况,预估最大的金额上限,再决定具体长度。
意料之外的惊喜,在看书籍中意外的解决了第二组的两个问题。 由于CPU不支持对 DECIMAL 的 直接计算,所以在计算的过程中需要额外的空间及计算开销,导致性能过慢。还存在另外一种解决方案:使用 BIGINT 代替 DECIMAL,在计算时,可以乘或除以相应的倍数即可,来取代 DECIMAL 计算代价高的问题。
最后总结:
FLOAT和 DOUBLE类型会存在精度问题,是因为十进制0.1在电脑里用二进制是无法精确表示的。
DECIMAL类型在数据库中存储的字节长度计算公式:对decimal(M,D) ,如果M>D,长度为M+2,否则为D+2。
要根据具体业务情况,预估最大的金额上限,再决定具体长度。
DECIMAL 计算的过程中需要额外的空间及计算开销,性能低。
‘伍’ mysql设计数据库钱用什么字段
通常在处理金额方面,使用float 和double 明显不够精确。
设置字段使用decimal 后面不写默认是(10)。根据情况可以设置第二个参数,第二个参数是需要保留的位数,在java 中也不能直接使用 + - * / 方法来计算。使用bigDecimal 处理加法:add 减法:substract 乘法:multiply 除法:divdie。计算
‘陆’ 数据库存钱是用的int还是demical类型
数据库存钱一般使用货币型,当然如果用demical也是可以的