-
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。