类型名称

显示长度JAVA类型
VARCHARL+Njava.lang.String
CHARNjava.lang.String
BLOBL+Njava.lang.byte[]
TEXT65535java.lang.String
INTEGER4java.lang.Long
TINYINT3java.lang.Integer
SMALLINT5java.lang.Integer
MEDIUMINT8java.lang.Integer
BIT1java.lang.Boolean
BIGINT20java.math.BigInteger
FLOAT4+8java.lang.Float
DOUBLE22java.lang.Double
DECIMAL11java.math.BigDecimal
BOOLEAN1
ID11java.lang.Long
DATE10java.sql.Date
TIME8java.sql.Time
DATETIME19java.sql.Timestamp
TIMESTAMP19java.sql.Timestamp
YEAR4

java.sql.Date

关于Mysql中如何选用这BigDecimal和double

1.首先与java不同的是mysql是用来持久化数据的,而java中使用的数据一般更多的是过一下内存;

2.数据库都要除了指定数据类型指外还需要指定精度,因此在DB中Double计算时精度的丢失比Java高得多;

因为Java默认精确到15-16位了;

3.更改数据类型的成本,Mysql比Java代码要难得多;

考虑到以上与java中不同几点,做点个人使用总结:

1.与商业金融相关字段要使用Decimal来表示,如金额,费率等字段;

2.参与各类计算如加,减,乘,除,sum,avg等等,也要使用Decimal;

3.经纬度,可以使用double来表示,这个可参考Java,只要保证精度范围即可;

4.如果确实不确定使用什么double或Decimal哪种类型合适,那最好使用Decimal,毕竟稳定,安全高于一切;

带小数的类型一律使用Decimal可以大大减少计算踩坑的概率

看到一篇文章挺好的,贴一下数据库字段类型与java数据类型的对应关系 - iBlog - 博客园

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐