-
CHAR(4)
:这个 4 表示字符数(最大255),不是字节数,不管是中文还是字母都是放四个,按字符计算
-
VARCHAR(4)
:这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据
-
简单来说,CHAR
和 VARCHAR
所指定的都是字符数,只不过所存储的内容占多少空间(即所占字节数)是不确定的,取决于定义表时的编码。只不过对于 VARCHAR
来说还要加上 1~3 个预留的字节
【例:utf8 编码存放四个字符,则所占字节数为:4 * 3 = 12】
-
CHAR(4)
: 是定长(固定的大小),就是说,即使你插入 aa
,也会占用分配的 4
个字符的空间.
-
VARCHAR(4)
: 是变长(变化的大小),就是说,如果你插入了 aa
,实际占用空间大小并不是 4
个字符,而是按照实际占用空间来分配(说明:VARCHAR
本身还需要占用 1~3
个字节来记录存放内容长度)。
-
什么时候使用 CHAR
什么时候使用 VARCHAR
如果数据是定长,推荐使用char,比如 md5
的密码,邮编,手机号,身份证号码等
如果一个字段的长度是不确定,我们使用 VARCHAR
,比如留言,文章
查询速度: CHAR
> VARCHAR
-
在存放文本时,也可以使用 TEXT
数据类型,可以将 TEXT
列视为VARCHAR
列,注意 TEXT
不能有默认值,大小 0~2^16
字节。如果希望存放更多字符,可以选择 MEDIUMTEXT 02^24
或者 LONGTEXT0~2^32
。