1. varchar(n) 的最大值字符数是多少
varchar 最大可以保存 65535 字节,但是具体保存多少个字符,不同的编码不一样。
MySQL 5.0 之前的版本:n 指的是 n 个字节
n 的最大值是 65535,如果以 utf-8 格式存放数据,最长保存 [n/3] 个汉字(一个汉字占 3 字节),即 varchar(20) 类型的字段只能保存 6 个汉字;
MySQL 5.0 之后的版本:n 指的是 n 个字符
无论是数字,字母还是汉字,都可存放 n 个,即 varchar(20) 类型的字段可以保存 20 个汉字;
utf8mb4 格式:varchar(n) 中每个字符最多占 4 个字节,英文数字占 1 个字节,汉字占 3 个字节。
2. varchar(n) 需要 1 到 2 个额外字节记录保存的字符长度
当 n<=255 的时候,只需要 1 个字节记录即可(数据表示范围:0~28-1,即 0~255);当 n>255 的时候,则需要 2 个字节记录(28~ 216-1,即 256~65535)。
字符的长度保存在第一个或者前两个字节中。所以(对于 utf8mb4 格式):
a. 如果 varchar(20),实际最多需要 1+20*4 个字节的存储空间;
b. 如果 varchar(255),实际最多需要 1+255*4 个字节的存储空间;
c. 如果 varchar(256),实际最多需要 2+256*4 个字节的存储空间;
d. 如果 varchar(500),实际最多需要 2+500*4 个字节的存储空间。
因为 varchar 是存储可变长字符串,所以:
a. 如果 name varchar(8),那么 name='12345678',实际长度为 1+8*1 字节;
b. 如果 name varchar(32),那么 name='12345678',实际长度为 1+8*1 字节;
c. 如果 name varchar(16),那么 name='1234',实际长度为 1+4*1 字节;
标签:20,字节,varchar,MySQL,长度,name From: https://www.cnblogs.com/Higurashi-kagome/p/17189546.html基于 MySQL 中 varchar 长度的设置问题 修改