项目场景:
在数据库建表时经常会茫然使用哪些类型,这篇文章可以满足你的使用场景;
Mysql类型描述:
- tinyint:用于储存非常小的整数,范围为 -128到127(有符号)或0到255(无符号);
- char(n):定长字符串,长度固定为n,如果存储的字符串短于n,MySQL会用空格填充;
- varchar(n):可变长字符串,长度最多为n,根据实际内容分配空间;
- bit:用于存储位字段,每个位代表一个布尔值;
- enum:枚举类型,只允许存储预定义的一组值;
- bigint:用于存储大整数,范围为-2^63到2^63-1;
- decimal(m,n):定点数类型,用于存储精确的小数值,m为总位数,n为小数位数;
- timestamp:时间戳类型,包含日期和时间,会根据时区自动转换;
- datetime:包含日期和时间,但不会自动转换时区;
映射Java实体:
MySQL字段类型 | Java实体类类型 | MySQL表中的数据示例 | 使用场景 |
---|---|---|---|
tinyint | byte | 1 (0-255的整数) | 适用于存储非常小的整数,如状态码、布尔值等。 |
char(n) | String | "John" (固定长度,可能会有空格填充) | 适用于存储长度几乎不变的数据,如某些固定格式的编码。 |
varchar(n) | String | "Doe" (可变长度,仅存储实际字符) | 适用于存储长度可变的数据,如用户输入的文本信息。 |
bit | boolean[] | b'1101' (二进制字符串,每个位代表一个布尔值) | 适用于存储位图或标志位,如权限设置。 |
enum | String | 'red' (枚举值之一,如'red', 'green', 'blue') | 适用于存储有限选项的数据,如性别、状态等。 |
bigint | long | 1234567890 (64位有符号整数) | 适用于存储大范围的整数,如序列号、ID等。 |
decimal(m,n) | BigDecimal | 1234.5678 (定点数,m位总位数,n位小数位数) | 适用于存储精确的小数值,如金额、财务计算等。 |
timestamp | java.sql.Timestamp | '2024-04-12 15:30:00' (时间戳,包含日期和时间) | 适用于存储时间戳,如日志记录、事件触发时间等。 |
datetime | java.util.Date | '2024-04-12 15:30:00' (日期时间,包含日期和时间) | 适用于存储日期和时间信息,如用户注册时间、活动开始时间等。 |