utf-8,一个字符占用3个字节;
gbk,一个字符占用2个字节;
拉丁字符集,一个字符占用1个字节;
eg:
如果存储类型是CHAR(4),’‘则占用4个字节;
如果存储类型是VARCHAR(4),’’,则占用1个字节,这1个字节存放的是字符串的长度,是0;‘ab’,为啥是3个字节,存放2个字节,其长度为存放在1个字节中,所以是3个字节;
VARCHAR(4)表示最大的字符数是4;
VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。
也就是说VARCHAR的存储需求可能是+1个字节,也可能是+2个字节,若字符串长度超过256,则+2个字节,来表示长度,2个字节表示的最大的长度是65536
create table t_varchar(a varchar(65535)); // 不能创建成功的原因如下
因为当前的字符集是utf-8,一个字符占用3个字节,65535/3=21845个字符,这里最长的字符是21845个字符
16:28