MySQL中的VARCHAR和CHAR有什么区别?
我正在尝试存储MD5哈希。
MySQL中的VARCHAR和CHAR有什么区别?
我正在尝试存储MD5哈希。
当前回答
Char有一个固定的长度(支持2000个字符),它代表字符是一种数据类型
Varchar具有可变长度(支持4000个字符)
其他回答
VARCHAR是可变长度的。
CHAR是固定长度。
如果您的内容是固定大小的,那么使用CHAR将获得更好的性能。
请参阅MySQL页面上关于CHAR和VARCHAR类型的详细解释(一定要阅读注释)。
区分这两者对完整性方面也有好处。
如果你希望存储有长度规则的东西,比如yes或no,那么你可以使用char(1)来存储Y或n。对于货币代码也很有用,你可以使用char(3)来存储像USD, EUR或AUD这样的东西。
varchar更适合那些除了限制长度之外没有一般规则的情况。它适用于名称或描述之类的东西,在这些地方,值的长度会有很多变化。
然后出现了文本数据类型,并在工作中使用了扳手(尽管它通常只是没有定义上限的varchar)。
CHAR
CHAR是一个固定长度的字符串数据类型,因此字段中的任何剩余空间都用空格填充。 CHAR每个字符占用1个字节。因此,一个CHAR(100)字段(或变量)在磁盘上占用100个字节,而不管它所包含的字符串是什么。
VARCHAR
VARCHAR是一种可变长度的字符串数据类型,因此它只保存您分配给它的字符。 VARCHAR每个字符占用1个字节,+ 2个字节保存长度信息(例如,如果你设置VARCHAR(100)数据类型= ' Dhanika ',那么它将占用7个字节(对于D, H, a, N, I, K和a)加上2个字节,或总共9个字节)。
一个CHAR(x)列只能有x个字符。 一个VARCHAR(x)列最多可以有x个字符。
由于你的MD5哈希值总是相同的大小,你可能应该使用CHAR。
然而,你不应该首先使用MD5;它的弱点是众所周知的。 请改用SHA2。 如果要对密码进行哈希,则应该使用bcrypt。
CHAR是固定长度,VARCHAR是可变长度。CHAR总是对每个条目使用相同数量的存储空间,而VARCHAR只使用存储实际文本所需的空间。