| 类型名称 | 显示长度 | JAVA类型 |
| VARCHAR | L+N | java.lang.String |
| CHAR | N | java.lang.String |
| BLOB | L+N | java.lang.byte[] |
| TEXT | 65535 | java.lang.String |
| INTEGER | 4 | java.lang.Long |
| TINYINT | 3 | java.lang.Integer |
| SMALLINT | 5 | java.lang.Integer |
| MEDIUMINT | 8 | java.lang.Integer |
| BIT | 1 | java.lang.Boolean |
| BIGINT | 20 | java.math.BigInteger |
| FLOAT | 4+8 | java.lang.Float |
| DOUBLE | 22 | java.lang.Double |
| DECIMAL | 11 | java.math.BigDecimal |
| BOOLEAN | 1 | |
| ID | 11 | java.lang.Long |
| DATE | 10 | java.sql.Date |
| TIME | 8 | java.sql.Time |
| DATETIME | 19 | java.sql.Timestamp |
| TIMESTAMP | 19 | java.sql.Timestamp |
| YEAR | 4 | java.sql.Dat |
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可以大大减少计算踩坑的概率



