本文主要介绍了 MySQL 中的各种数据类型以及在 Java 中的对应类型。包括整数类型、浮点数类型、字符串类型、日期和时间类型以及其他类型。每种类型都详细说明了其特点、存储范围以及在 Java 中的对应处理方式。
一、整数类型
- TINYINT
- MySQL 中,TINYINT 占 1 字节,有符号范围 - 128 到 127,无符号 0 到 255。若用于存储布尔值(0 或 1),Java 中可用
boolean
类型接收;若存储一般小范围整数值,有符号时对应byte
,无符号或范围稍大时可考虑short
。
- MySQL 中,TINYINT 占 1 字节,有符号范围 - 128 到 127,无符号 0 到 255。若用于存储布尔值(0 或 1),Java 中可用
- SMALLINT
- 占 2 字节,有符号范围 - 32768 到 32767。Java 中通常对应
short
类型,能很好地处理该范围内的整数数据。
- 占 2 字节,有符号范围 - 32768 到 32767。Java 中通常对应
- MEDIUMINT
- 占 3 字节,有符号范围 - 8388608 到 8388607。由于其范围在 Java 的
int
类型范围内,所以对应int
类型,方便数据的转换与操作。
- 占 3 字节,有符号范围 - 8388608 到 8388607。由于其范围在 Java 的
- INT/INTEGER
- 占 4 字节,有符号范围 - 2147483648 到 2147483647。这是 MySQL 中常用整数类型,在 Java 中对应
int
类型,在数据交互中广泛应用。
- 占 4 字节,有符号范围 - 2147483648 到 2147483647。这是 MySQL 中常用整数类型,在 Java 中对应
- BIGINT
- 占 8 字节,有符号范围 - 9223372036854775808 到 9223372036854775807。对应的 Java 类型是
long
,用于处理较大范围的整数值,如数据库中存储的大型编号或计数等数据。
- 占 8 字节,有符号范围 - 9223372036854775808 到 9223372036854775807。对应的 Java 类型是
二、浮点数类型
- FLOAT
- MySQL 中的单精度浮点数,占 4 字节,用于存储近似十进制数值。在 Java 中对应
float
类型。但因浮点数精度问题,在计算和比较时可能出现误差,使用时需谨慎。
- MySQL 中的单精度浮点数,占 4 字节,用于存储近似十进制数值。在 Java 中对应
- DOUBLE
- 双精度浮点数,占 8 字节,精度高于 FLOAT。Java 中对应
double
类型,同样要注意精度相关问题,适用于对精度要求稍高的浮点数存储与计算场景。
- 双精度浮点数,占 8 字节,精度高于 FLOAT。Java 中对应
三、字符串类型
- CHAR
- MySQL 的定长字符串类型,如
CHAR(10)
固定存储 10 个字符,不足则用空格填充。Java 中用String
类型接收,读取时需用trim()
方法去除可能的填充空格,常用于存储长度固定的字符串数据,如身份证号固定位数部分等。
- MySQL 的定长字符串类型,如
- VARCHAR
- 变长字符串类型,如
VARCHAR(20)
最多存 20 字符,实际按字符串实际长度存储。在 Java 中对应String
类型,灵活性高,适合存储长度不确定的字符串,如用户名、文章标题等。
- 变长字符串类型,如
- TEXT
- 用于存储较长文本,有 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 等,存储长度各异。Java 中也用
String
类型处理,但处理大 TEXT 数据时要考虑性能与内存占用,常用于存储文章内容、备注等长文本信息。
- 用于存储较长文本,有 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 等,存储长度各异。Java 中也用
四、日期和时间类型
- DATE
- MySQL 中存储日期,格式 ‘YYYY - MM - DD’。Java 中用
java.sql.Date
类型接收与处理,在数据读取与转换时,需注意与 Java 中日期处理方式的衔接,常用于存储生日、创建日期等仅涉及日期的数据。
- MySQL 中存储日期,格式 ‘YYYY - MM - DD’。Java 中用
- TIME
- 存储时间,格式 ‘HH:MM:SS’。对应 Java 中的
java.sql.Time
类型,方便处理时间相关数据,如记录事件发生的时间点等。
- 存储时间,格式 ‘HH:MM:SS’。对应 Java 中的
- DATETIME
- 存储日期和时间,格式 ‘YYYY - MM - DD HH:MM:SS’。在 Java 中通常使用
java.sql.Timestamp
类型,它是java.util.Date
的子类,能精确到纳秒,适用于需要精确记录日期和时间的场景,如交易时间、系统日志时间等。
- 存储日期和时间,格式 ‘YYYY - MM - DD HH:MM:SS’。在 Java 中通常使用
- TIMESTAMP
- 范围从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC。同样在 Java 中用
java.sql.Timestamp
类型处理,常用于记录数据的插入或更新时间等时间戳信息。
- 范围从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC。同样在 Java 中用
五、其他类型
- BLOB
- 用于存储二进制数据,有 TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 等不同大小类型。在 Java 中用
byte[]
数组接收与处理,通过输入输出流进行二进制数据的读写操作,可用于存储图像、音频、视频等文件的二进制内容。
- 用于存储二进制数据,有 TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 等不同大小类型。在 Java 中用
- ENUM
- MySQL 的枚举类型,如
ENUM('male','female')
定义值集合。Java 中可先用String
类型接收,但更好的做法是定义一个枚举类(enum
)与之对应,以增强数据约束与验证,常用于存储有限个固定值的字段,如性别、状态等。
- MySQL 的枚举类型,如
- SET
- 允许存储一个或多个预定义值集合中的成员,如
SET('reading','writing','drawing')
。Java 中可用String
类型接收,处理时需解析字符串获取成员。也可自定义 Java 类,如用List<String>
或Set<String>
等集合类型更好地处理数据,适用于存储具有多个可选值的字段,如用户的兴趣爱好等。
- 允许存储一个或多个预定义值集合中的成员,如