What's the difference between VARCHAR and CHAR?
在mysql中varchar和char有什么区别?
我正在尝试存储MD5哈希。
如果您的内容是固定大小的,那么使用
有关char和varchar类型的详细说明,请参见mysql页面(务必还要阅读注释)。
烧焦
瓦尔查尔
- MySQL5.0.3之前版本:255个字符。
- PostMySQL5.0.3:共65535个字符。
char与varchar
char用于固定长度的大小变量varchar用于可变长度的大小变量。
例如。
1 2 3 4 5 6 7 8 | CREATE TABLE temp (City CHAR(10), Street VARCHAR(10)); INSERT INTO temp VALUES('Pune','Oxford'); SELECT LENGTH(city), LENGTH(street) FROM temp; |
输出将为
1 2 | LENGTH(City) LENGTH(street) 10 6 |
号
结论:如果可变长度是可变的,那么要有效地利用存储空间,必须使用varchar而不是char。
因为MD5散列的大小总是相同的,所以您可能应该使用
然而,您不应该首先使用MD5;它有已知的弱点。用sha2代替。如果您正在散列密码,则应使用bcrypt。
如果输入的字符小于声明的长度,varchar将切断尾随空格,而char将不会。char将填充空格,并且始终是声明长度的长度。在效率方面,varchar更擅长修剪字符以进行更多调整。但是,如果您知道char的确切长度,char将以更快的速度执行。
What's the difference between VARCHAR and CHAR in MySQL?
号
对于已经给出的答案,我想补充一点,在OLTP系统或频繁更新的系统中,考虑使用
I am trying to store MD5 hashes.
号
如果安全性真的很重要,MD5哈希不是最佳选择。但是,如果您要使用任何哈希函数,请考虑它的
在今天的大多数RDBMS中,它们是同义词。但是,对于那些仍然有区别的系统,char字段存储为固定宽度的列。如果将其定义为char(10),那么将向表中写入10个字符,其中"padding"(通常是空格)用于填充数据未用完的任何空间。例如,保存"bob"将另存为("bob"+7个空格)。varchar(变量字符)列用于存储数据,而不会浪费char列所做的额外空间。
和往常一样,维基百科的声音更大。
char是固定长度字段;varchar是可变长度字段。如果存储的字符串的长度可变,如名称,则使用varchar;如果长度始终相同,则使用char,因为它的大小效率略高,速度也略快。
char是固定长度字符数据类型,varchar是可变长度字符数据类型。
因为char是固定长度的数据类型,所以char值的存储大小等于此列的最大大小。因为varchar是可变长度的数据类型,所以varchar值的存储大小是输入数据的实际长度,而不是此列的最大大小。
当列中的数据项的大小应相同时,可以使用char。当列中的数据项的大小预计会有很大变化时,可以使用varchar。
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.
号
char或varchar-用于输入文本数据,其中长度可以用括号表示。例如-姓名字符(20)
烧焦:
- 同时支持字符和数字。
- 支持2000个字符。
- 固定长度。
变量字符:
- 同时支持字符和数字。
- 支持4000个字符。
- 可变长度。
有什么意见……!!!!!