MySQL中有很多种数据类型,其中存储字符串的类型就有varchar、char、text等等,抛开text类型不说,因为这个数据类型本身存储的就是大文本,又加上MySQL中没有nvarchar数据类型, 所以直接比较的是varchar和char的区别。
varchar和char有什么区别呢,下面我们就是一起来看看吧。
char
char数据类型
表示的是定长的字符串, 当你输入小于指定的数目。
假设你指定的数目是char(10)
, 当你输入小于10个字符的时候,char数据类型
会在你最后一个字符后面补空值。当你输入超过指定允许最大长度后, MySQL就会报以下错误了。
Data too long for column 'username' at row 1
varchar
varchar数据类型
不再是定长的字符串了,它是一个可变长度的字符串,并且是非Unicode
的字符数据,字符长度在0-8000
之间,存储时如果是字符长度为100的字符串,则只会在数据库中占用字符长度100的空间,没有char数据类型
的补空值的情况。
这里的Unicode 是一种字符编码方案, 它为每种语言中的每个字符都设定了统一唯一的二进制编码, 以 实现跨语言、跨平台进行文本转换、处理的要求。
使用 char
存储定长的数据非常方便、char
检索效率高, 无论你存储的数据是否到了 10 个字节, 都要 去占用 10 字节的空间。
使用 varchar
可以存储变长的数据, 但存储效率没有 char
高。
如何选择使用
如果选择使用varchar还是char数据类型,是要根据具体的场景,还有当前字段的数据来决定的。
比如一般固定长度,且字符长度短,如小区名称、小区门牌号之类的,或者是学号、班级号等等这种类型的选用char类型来保存会比较好。
比如一些大的文本信息,短文之类的信息,就不可能去使用char了,还是使用varchar性能比较好一些。