发布时间:2020/05/15 作者:天马行空 阅读(1483)
varchar(n),n代表什么意思?
mysql5.0.3之前varchar(n)这里的n表示字节数
mysql5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个
n最大可以设置多少?
mysql要求一个行定义长度不能超过65535个字节,不包括text、blob等大字段类型,varchar的长度受到此长度限制,和其他非大字段加起来不能超过65535个字节。注意这个地方说的是字节,那么字节和你使用的编码是有关系的。
如果是GBK编码,一个字符占用的是2个字节,对应n的最大值就是65535/2=32766;
如果是UTF8编码,一个字符占用的是3个字节,对应n的最大值就是65535/2=21845;
如果是utf8mb4编码,一个字符占用的是4个字节,对应n的最大值就是65535/2=16383;
若超过这个限制,就会出现报错了。
我们经常看到varchar(255),为什么?
首先,255并不是varchar这种字段类型的最大长度。
这里面有一个概念:InnoDB存储引擎的表索引的前缀长度最长是767字节(bytes)。
你如果需要建索引,就不能超过 767 bytes;utf8编码时 255*3=765bytes ,恰恰是能建索引情况下的最大值。
varchar(255) 不是最优的字符长度,最优还是应该根据实际需要的来。但是这是一个保证你能少出错的一个很好的默认值。