MySQL中的VARCHAR和CHAR有什么区别?

我正在尝试存储MD5哈希。


当前回答

Char或varchar-用于输入文本数据,长度可以用括号表示 Eg- name char (20)

其他回答

根据高性能MySQL书:

VARCHAR stores variable-length character strings and is the most common string data type. It can require less storage space than fixed-length types, because it uses only as much space as it needs (i.e., less space is used to store shorter values). The exception is a MyISAM table created with ROW_FORMAT=FIXED, which uses a fixed amount of space on disk for each row and can thus waste space. VARCHAR helps performance because it saves space. CHAR is fixed-length: MySQL always allocates enough space for the specified number of characters. When storing a CHAR value, MySQL removes any trailing spaces. (This was also true of VARCHAR in MySQL 4.1 and older versions—CHAR and VAR CHAR were logically identical and differed only in storage format.) Values are padded with spaces as needed for comparisons.

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

用于存储固定长度的字符串值。 最大数目。数据类型可以容纳255个字符。 它比VARCHAR快50%。 使用静态内存分配。

VARCHAR

用于存储可变长度的字母数字数据。 此数据类型所能容纳的最大值是 Pre-MySQL 5.0.3: 255个字符。 后mysql 5.0.3:为行共享65,535个字符。 它比CHAR慢。 使用动态内存分配。

VARCHAR是可变长度的。

CHAR是固定长度。

如果您的内容是固定大小的,那么使用CHAR将获得更好的性能。

请参阅MySQL页面上关于CHAR和VARCHAR类型的详细解释(一定要阅读注释)。

区分这两者对完整性方面也有好处。

如果你希望存储有长度规则的东西,比如yes或no,那么你可以使用char(1)来存储Y或n。对于货币代码也很有用,你可以使用char(3)来存储像USD, EUR或AUD这样的东西。

varchar更适合那些除了限制长度之外没有一般规则的情况。它适用于名称或描述之类的东西,在这些地方,值的长度会有很多变化。

然后出现了文本数据类型,并在工作中使用了扳手(尽管它通常只是没有定义上限的varchar)。