char与varchar
char是一种固定长度的类型,varchar则是一种可变长度的类型
char如果存的长度不够位数,会在右边用空格补齐。
在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)
面试会问到,varchar是包含了一个记录长度的字节的。
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型
2020.08.23更新
mysql 中varchar(50)最多能存多少个汉字?
4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节)
5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个
mysql varchar(20) 是20个字节 还是 20个字符?
MySQL4.1前的 varchar(20) 是20个字节。最大的限制是255字节
MySQL5.0以后 varchar(20)是20个字符。最大的限制是65535-3占位符号=65532字节
也就是字符要按照字符集来计算最大能存的字符
GBK:65532/2 字符
UTF8:65532/3 字符
如果超出了 范围,会转为text 类型来存哦。