MySQL 文本存值的类型区别

1.char长度固定,varchar和text长度可变。(char可能存在空间浪费,字符串长度不够,则后面用空格补足空字符串)

2.char和varchar可以设定默认值,text没有默认值。

3.char和varchar定义时要指定长度,text定义时通常不用指定长度,可以自己计算。

 

varchar

varchar类型长度范围65535,实际范围为65532或65533。为什么?

    varchar存储字符串的同时会在内容开头用1到2个字节保存该字符串的实际长度(小于255采用一个字节保存,长

度超过255时需要2个字节),还有如果存在not null的时候,整条记录需要一个额外的字节来保存当前字段的null

值,也会占用一位。除非所有的字段都不是null,这个字节才可以省略。因此varchar定义的最大长度为65535,实际

长度为65532或65533.


varchar最大长度是65535字节,因此对不同的字符集,有效长度还不一样。

字符类型若为gbk, 每个字符最多占2个字节,最大长度不能超过32767;

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

text

text的65535字节全部用来存储数据,使用额外的2个字节来存储数据的大小,varchar根据存储数据的大小选择用几个字节来存储

 

数据的检索效率是:char>varchar>text

你可能感兴趣的:(MySQL 文本存值的类型区别)