如果某一项中设置的是varchar(50)
mysql varchar(50) 不管中文 还是英文 都是存50个的
转载:https://blog.csdn.net/zhengshg/article/details/64918884
-
varchar(n),n表示什么?
MySQL5.0.3之前varchar(n)这里的n表示字节数
MySQL5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个
MySQL要求一个行定义长度不能超过65535个字节,不包括text、blob等大字段类型,varchar长度受此长度限制,和其他非大字段加起来不能超过65535个字节.
超过以上限制则会报错
-
varchar(n)占用几个字节
varchar(n)占用几个字节跟字符集有关系:
字符类型若为gbk,每个字符占用2个字节,
字符类型若为utf8,每个字符最多占用3个字节
根据字符集,字符类型若为gbk,每个字符占用2个字节,最大长度不能超过65535/2 =32766; 字符类型若为utf8,每个字符最多占用3个字节,最大长度不能超过 65535/3 =21845,若超过这个限制,则会自动将varchar类型转为mediumtext或longtext,例如:
drop table if EXISTS test1111;
create table test1111(
id char(255) null,
content varchar(63000) null
);
desc test1111;
结果:
CREATE TABLE `test1111` (
`id` char(255) DEFAULT NULL,
`content` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8;