1. CHAR
固定长度: CHAR 是固定长度的字符串。如果定义一个 CHAR(30),那么不管存储的实际数据长度是多少,它都会占用 30 个字符的空间。如果存储的字符串长度小于 30,MySQL 会在右边填充空格。
性能: 因为是固定长度,所以 CHAR 在某些情况下可能比 VARCHAR 性能更好,尤其是在处理定长数据时。
2. VARCHAR
可变长度: VARCHAR 是可变长度的字符串。定义一个 VARCHAR(30),表示可以存储长度最多为 30 个字符的字符串。实际存储时,只会占用实际字符串的长度加上一个额外字节(如果字符串长度小于 255 字节)或两个额外字节(如果字符串长度大于等于 255 字节)来存储字符串长度信息。
存储效率: 因为 VARCHAR 只存储实际数据的长度,所以在需要存储大量不同长度的字符串时,比 CHAR 更加节省空间。
VARCHAR(30) 中的 30 代表的涵义
在 VARCHAR(30) 中,30 表示该字段最多可以存储 30 个字符的字符串。这并不意味着它总是占用 30 个字符的空间,而是说最多可以存储 30 个字符的数据。
总结
- CHAR 适用于存储固定长度的字符串,性能可能稍好但浪费空间。
- VARCHAR 适用于存储可变长度的字符串,更加节省空间,灵活性更高。