mysql varchar(n) n表示字符个数

(注:如下针对mysql 5.0以上版本)mysql

mysql varchar(n)  n表示字符个数,不是字节数。sql

对于utf8编码,不管是字符、数字、汉字均占3字节。

varchar最大长度为65535个字节,最大可存储汉字数 = (65535-1-2)/3
减1是由于实际存储从第2个字节开始
减2是由于要在列表长度存储实际字符长度

除3是由于utf8编码限制。编码


例:1.验证varchar(n)表示汉字spa

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

例:2. n表示字符,那么varchar(n)中n的最大值应该为: code

n = (65535-1-2-4)/3=21842.67 = 21843
减1和减2与上例相同;
减4的缘由是int类型的id占4个字节;
blog

编码是utf8class