char的总结:
char最大长度是255字节,是定长格式,长度不足,后边添加空格方式来存储,注意是字节,而不是字符。可以有默认值,检索时尾部有空格会被截断。存储范围为255或者254个字节。
非空时最大长度位254字节,因为非空标记需要占据一个字节。
varchar的总结:
varchar的最大长度65535是指能存储的字节数。注意是字节数这个和字符集有关系。一个汉字字符用utf8占用3字节,用gbk占用2字节。可以有默认值,尾部有空格不会截断。存储范围为65533或者65532个字节。
非空时需要1字节来标记,当长度小于255个字节时使用1字节标记字段长度,当长度超过255字节时,使用2字节来标记字段长度。
text的总结:
text和varchar基本相同。text会忽略指定的大小这和varchar有所不同,text不能有默认值。尾部有空格不会被截断。text使用额外的2个字节来存储数据的大小,varchar根据存储数据的大小选择用几个字节来存储。text的65535字节全部用来存储数据,varchar则会占用1-3个字节去存储数据大小和非空标记。存储范围为65535字节。
转载请注明:谷谷点程序 » mysql中char、varchar、text区别和存储范围