varchar适用场景
1. 字符串列的最大长度逼平均长度大很多
2. 列的更新很少
3. 使用了像utf-8这样复杂的字符集,每个字符都使不同的字节数进行存储
char适用场景
1. 存储密码的md5值,因为这是定长的
2. 经常变更的数据,因为定长的char不容易产生碎片
3. 对于非常短的列,char比varchar在存储空间上也更有效率
注:字符串长度定义不是字节数,而是字符数.多字节字符集需要更多的空间存储单个字符.
问题1
对于utf-8这种存储时不是所有字符都占用相同的字节的情况, char虽然在长度上是定长的,但在存储空间大小上有可能变化吗,mysql存储引擎会按照utf-8字符集里字符的最大空间来存储定长的char吗?
timestamp
保存了1970年1月1日午夜(格林尼治标准时间)以来的秒数,他和unix时间戳相同.表示范围为1970-2038年.
保存的时间和时区有关
datetime
表示范围1001-9999. 和时区无关