mysql中char和varchar

前些天做项目,设计数据表,string类型的我设计成了char类型,后来查了下varchar和char的区别,才发现两者并不像我想那样没什么区别:

mysql中char和varchar是有很大区别的:
        varchar是可变的,char是不可变的;
        varchar是一种可变的长度类型,char是不可变的长度类型;

        char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,mysql就会在他的右边用空格字符补足。(在检索操作中哪些填补出来的空格字符将被去掉) 在varchar(M)类型的数据列里,每个值占用刚好够用的字节再加上一个用来记录长度的字节(即总长度为L+1字节);

在MySQL中用来判断是否需要进行对据列类型转换的规则

  1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
  2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
  3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
原文地址:https://www.cnblogs.com/wangrongjie/p/2827539.html