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

我正在尝试存储MD5哈希。


当前回答

字符:

同时支持字符和数字。 支持2000个字符。 固定长度。

VARCHAR:

同时支持字符和数字。 支持4000字符。 可变长度。

任何评论 ......!!!!

其他回答

CHAR Vs VARCHAR

CHAR用于固定长度大小变量 VARCHAR用于可变长度大小变量。

E.g.

Create table temp
(City CHAR(10),
Street VARCHAR(10));

Insert into temp
values('Pune','Oxford');

select length(city), length(street) from temp;

输出将是

length(City)          Length(street)
10                    6

结论:如果变长是可变的,必须使用VARCHAR而不是CHAR来有效地利用存储空间

char是一种定长字符数据类型,varchar是一种变长字符数据类型。

由于char是一种固定长度的数据类型,因此char值的存储大小等于此列的最大大小。因为varchar是一种变长数据类型,所以varchar值的存储大小是输入数据的实际长度,而不是该列的最大大小。

当期望列中的数据项具有相同的大小时,可以使用char。 当一个列中的数据条目在大小上有很大变化时,可以使用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是固定长度,VARCHAR是可变长度。CHAR总是对每个条目使用相同数量的存储空间,而VARCHAR只使用存储实际文本所需的空间。

根据高性能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.