转载 http://www.ganecheng.tech/blog/52316408.html
我在建库时发现 定义了编码格式utf8 但是CHAR(2),可以存放2个汉字 ,字母也是2个,所以引出下文.
MySQL数据类型 | 含义 |
char | 固定长度,最多28−128−1个字符,28−128−1个字节 |
varchar | 可变长度,最多216−1216−1个字符,216−1216−1个字节 |
char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节,m∗3<=255m∗3<=255,m∗3<=65535m∗3<=65535。使用 utf8mb4的话插入m个中文,会占用m*4个字节。m∗4<=255m∗4<=255,m∗4<=65535m∗4<=65535。