转自:https://blog.csdn.net/w576233728/article/details/97624532
mysql> create table test_varchar (id int,bytes varchar(2)); --建表 Query OK, 0 rows affected (0.01 sec) mysql> insert into test_varchar (id,bytes) values (1,'汉字'); Query OK, 1 row affected (0.00 sec) --成功插入两个汉字 mysql> insert into test_varchar (id,bytes) values (1,'ab'); Query OK, 1 row affected (0.00 sec) --成功插入两个英文字符 --尝试插入三个英文字符,有个warning mysql> insert into test_varchar (id,bytes) values (1,'abc'); Query OK, 1 row affected, 1 warning (0.00 sec) --查看表,可以发现超出长度的被截断了 mysql> select * from test_varchar; +------+--------+ | id | bytes | +------+--------+ | 1 | 汉字 | | 1 | ab | | 1 | ab | +------+--------+ --插入超出数目的汉字 mysql> insert into test_varchar (id,bytes) values (1,'汉字测试'); Query OK, 1 row affected, 1 warning (0.00 sec) --同样也会被截断 mysql> select * from test_varchar; +------+--------+ | id | bytes | +------+--------+ | 1 | 汉字 | | 1 | ab | | 1 | ab | | 1 | 汉字 | +------+--------+ --使用不同id插入,仍然被截断,说明不是id的影响 mysql> select * from test_varchar; +------+--------+ | id | bytes | +------+--------+ | 1 | 汉字 | | 1 | ab | | 1 | ab | | 1 | 汉字 | | 2 | 汉字 | +------+--------+
总结,mysql中,char(n)和varchar(n)中n代表的是字符数,不论是中文还是英文,一个字符就是一个英文字母或一个汉字。