转自:http://www.cnblogs.com/piperck/p/5896318.html
MySql 5.0 以上的版本:
1、一个汉字占多少长度与编码有关:
UTF-8:一个汉字 = 3个字节,英文是一个字节
GBK: 一个汉字 = 2个字节,英文是一个字节
2、varchar(n) 表示n个字符,无论汉字和英文,MySql都能存入 n 个字符,仅实际字节长度有所区别。[注意]
3、MySQL检查长度,可用SQL语言 SELECT LENGTH(fieldname) FROM tablename 这个命令可以看到各行使用的字节数。
mysql版本5.6.32-78.0下面用实际例子来说明问题:
1. 首先创建一张临时用表:
create TEMPORARY table medivac(
name VARCHAR(10)
); CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
2. 插入一些数据:
INSERT INTO medivac (name) VALUES ('' at line 1
mysql> INSERT INTO medivac (name) VALUES ('a');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO medivac (name) VALUES ('哈');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO medivac (name) VALUES ('\U+1F604');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO medivac (name) VALUES ('哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈');
Query OK, 1 row affected, 1 warning (0.00 sec)
3. 查看表中数据:
select * from medieval
+--------------------------------+ | name | +--------------------------------+ | a | | 哈 | |