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

我正在尝试存储MD5哈希。


当前回答

CHAR

使用特定的内存分配 时间效率

VARCHAR

使用动态分配内存 记忆效率

其他回答

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来有效地利用存储空间

如果输入的字符比声明的长度短,Varchar将截断尾随空格,而char则不会。Char将填充空格,并且始终是声明的长度。在效率方面,varchar更熟练,因为它修剪字符,允许更多的调整。但是,如果您知道char的确切长度,则char将以更快的速度执行。

在今天的大多数rdbms中,它们是同义词。然而,对于那些仍然有区别的系统,CHAR字段被存储为固定宽度的列。如果将其定义为CHAR(10),则将向表中写入10个字符,其中“填充”(通常是空格)用于填充数据未使用完的任何空间。例如,保存“bob”将被保存为(“bob”+7个空格)。VARCHAR(变量字符)列用于存储数据,而不像CHAR列那样浪费额外的空间。

维基百科一如既往地大声疾呼。

CHAR是固定长度,VARCHAR是可变长度。CHAR总是对每个条目使用相同数量的存储空间,而VARCHAR只使用存储实际文本所需的空间。

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