1. 限制

  1. MySQL的单行长度限制
    • 单行长度不能超过65535个字节,不包括text和blob类型的字段
    • 单个varchar字段长度如果超过65535字节,会自动转为text和blob字段存储
    • varchar字段实际内容是存储在聚簇索引之外,用1或2个字节来记录长度,当长度超过255字节的时候,就需要用两个字节来记录,因此长度不能超过65535个字节
    • 这里是字节长度,而不是字符长度
      • GBK编码,是以两个字节编码一个字符
      • UTF-8编码,是以三个字节编码一个字符
  2. int(11)的11是什么意思?
    • 显示在终端的时候的长度
    • 当实际数字不足时,会用0补充到11
    • 不会影响实际的存储范围,int(5)和int(11)是实际存储的值是一样的
  3. char和varchar的区别
    • char是固定长度
    • varchar是可变长度
      • 在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的
      • 只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的
      • 如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型