字符串类型存储要求

https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

char 和 varchar

  • 他们的 (number) 表示字符数量
    • char(number)
      • 0-255
      • 插入时值不足 number,则右填充 space 直到占满
      • 检索时候,会对尾部进行 trim,除非开启 PAD_CHAR_TO_FULL_LENGTH 模式
    • varchar(number)
      • 0-65535
      • 存储占用
        • 额外字节作为前缀,当 值占用 <= 255 byte 时,使用一个前缀字节(1 byte),超过时,使用两个前缀字节(2 byte)
        • 值的实际占用为 number 字符集编码的单位长度,比如 utfbmb4 就是 number 4 byte
  • 使用 strict SQL 模式的话,当 number 超过他们的长度限制,会截取字符且报错