MYSQL, char 与 varchar的区别!
Posted Syw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL, char 与 varchar的区别!相关的知识,希望对你有一定的参考价值。
一、char 和 varchar 的区别:
1)取值范围:
char:取值范围:0~255
varchar:取值范围:0~65535
2)空间占用与速度:
char: 定长字符串,占用空间大,速度快,一般用于固定长度的表单提交数据存储,例如:身份账号、电话号码、密码等
varchar:变长字符串,占用空间小,速度慢
3)存储与检索数据:
char:存储的数据是否达到了给定值得字节,都要占用给定值大小的空间,不足的自动用空格填充,在检索时后面的空格会被自动去裁剪掉。
如:定义 tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数还是8,不足的用空格填充。
varchar:varchar的取值保存时只保存需要的字节数,另加一个字节来记录长度(如果列声明的长度超过255,则使用2个字节),varchar值保存时不进行填充,
当值保存和检索时尾部的空格仍保留。
如:定义 tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数为4+1
4)varchar的特殊点:
4.1)存储限制
varcahr字段是将实际内容单独存储在聚簇索引之外,内容开头用1或者2个自己来表示实际长度,因此最大长度不能超过65535
4.2)编码长度限制
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
二、char 和 varchar 和text三者之间的区别:
1)存储和检索数据的方式都不一样,数据检索的效率:char>varchar>text
2)char与varchar都可以有默认值,text不能指定默认值
三:注意点:
1、如果数据库引擎为INNODB的话,建议用varchar来代替char
2、从空间上来说适合使用varchar,从效率上来说适合用char,具体根据实际情况而定
3、mysql规定一个行的长度不能超过65535,否则会出现警告,建议切换使用text或blobs使用
以上是关于MYSQL, char 与 varchar的区别!的主要内容,如果未能解决你的问题,请参考以下文章