MySQL数据类型

  • 整数类型bit、bool、tinyint、smallint、mediumint、int、bigint
  • 浮点数类型float、double、decimal
  • 字符串类型char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext
  • 日期类型Date、DateTime、TimeStamp、Time、Year

mysql数据类型与JAVA对应关系

MySQL 数据类型Java 数据类型备注
INT, SMALLINTint, Integer整数类型
BIGINTlong, Long长整数类型
FLOATfloat, Float单精度浮点数
DOUBLEdouble, Double双精度浮点数
DECIMAL(p,s)BigDecimal高精度小数,p表示总位数,s表示小数位数
CHAR(n)String定长字符串,n表示长度
VARCHAR(n)String变长字符串,n表示最大长度
TEXTString大文本,适合存储较长文本内容
BLOBbyte[], InputStream二进制大对象,适合存储图片、文件等
DATELocalDate日期类型,不包含时间
TIMELocalTime时间类型,不包含日期
DATETIMELocalDateTime日期和时间类型
TIMESTAMPInstant, LocalDateTime带时区的日期时间类型,具体取决于JDK版本
BOOLEANboolean, Boolean布尔类型
BITboolean, Boolean单个二进制位,通常表示布尔值
BINARY(n)byte[], ByteArrayInputStream固定长度的二进制数据
VARBINARY(n)byte[], ByteArrayInputStream可变长度的二进制数据
ENUMString枚举类型,对应String
SETString集合类型,对应String
JSONString, Map, ListJSON数据类型,可以使用第三方库进行解析

备注:

  1. 包装类与基本类型:MySQL中的数值类型通常对应Java中的基本类型(如int, double)及其包装类(如Integer, Double)。
  2. 时间类型:根据JDK版本不同,可以选择使用LocalDateTimeInstant来处理TIMESTAMP类型。LocalDateTime不带时区,而Instant带时区信息。
  3. 二进制类型:对于BLOB和BINARY类型,通常使用byte[]InputStream来处理二进制数据。
  4. JSON类型:可以使用Java中的String类型来存储,或者使用第三方库(如Jackson、Gson)将其解析为Java对象。
  5. 枚举和集合类型:MySQL中的ENUMSET类型通常对应Java中的String类型,具体使用方式取决于业务需求。

数据类型选择建议

  1. 选小不选大:一般情况下选择可以正确存储数据的最小数据类型,越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小;
  2. 简单就好:简单的数据类型的操作通常需要更少的CPU周期,例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂;
  3. 尽量避免NULL:尽量制定列为NOT NULL,除非真的需要NULL类型的值,有NULL的列值会使得索引、索引统计和值比较更加复杂;
  4. 浮点类型的建议统一选择**decimal**
  5. 记录时间的建议使用**int**或者**bigint**类型,将时间转换为时间戳格式,如将时间转换为秒、毫秒,进行存储,方便走索引。