转载来源:https://blog.csdn.net/xiaoyu19910321/article/details/52325090
1.我们经常 mysql创建 varchar(20) name这个 20长度 究竟是表示的字符数还是字节数?根编码字符集又有没有关系?
首先 mysql 5.X 以上的版本的 定义中 表示的字符长度,如上:varchar(20)你既可以添加20个英文字符,也可以添加二十个中文字符,即表示的是字符长度。
mysql 4.X 的版本表示的是字节长度,会根据字符集转变 内容字节长度存储。
对于char(10)同上。
2.关于 int(2) 中的2 ,表示的并非是int类型只能输入2位数字,而是只能显示2位数字范围,可以添加11位的int的任何数字。
3.mysql 5.X以上版本 存储时 char最大255字节,这个和字符集是否有关系?
本人测试没有关系,字符集是GBK或者UTF-8在char(255)下都可已添加255个字符(字母或者汉字或者都有)。
但是对于varchar类型:
参考:https://blog.csdn.net/guanmaoning/article/details/106663446
在utf-8
状态下,汉字最多可以存 21844个字符串, 英文也为 21844个字符串 (虽然一个英文字符实际占用一个字节,但是utf-8定义字段时是默认以每个字符最大为3个字节来进行计算的,所以最大为varchar(21844))。
在gbk
状态下,汉字最多可以存 32766个字符串,英文也为 32766个字符串(虽然一个英文字符实际占用一个字节,但是gbk定义字段时是默认以每个字符最大为2个字节来进行计算的,所以最大为varchar(32766))。