1 .简述 :
CHAR 类型:
CHAR 类型:CHAR 是固定长度字符数据类型,当你创建一个 CHAR 字段时,MySQL会分配固定长度的空间,根据字符集,这个长度可能是1到255之间的任何值。CHAR
字段存储固定长度的字符串,如果数据不足指定的长度,MySQL会在其后添加空格以达到指定的长度。
VARCHAR 类型:
VARCHAR 类型:VARCHAR 是可变长度字符数据类型,当你创建一个 VARCHAR 字段时,MySQL会根据实际需要分配长度,这个长度可以是1到65535之间的任何值。VARCHAR
字段存储可变长度的字符串,所以它只会使用必要的空间。
2 .存储和检索方面的主要区别:
CHAR 列的长度固定,不管是否存储了数据,VARCHAR 列的长度是可变的。
CHAR 的存储效率高,VARCHAR 的存储效率较低。
CHAR 类型的字段长度固定,最大长度是255个字符;VARCHAR 类型的字段长度可变,最大长度是65535个字符。
CHAR 列长度固定为创建表时声明的长度, 长度值范围是 1 到 255 当 CHAR 值被存储时, 它们被 用空格填充到特定长度, 检索 CHAR 值时需删除尾随空格。
3 . 解决方案:
如果你知道你的字段将会有固定的长度,并且长度不会超过255,你可以使用 CHAR 类型。
如果你的字段长度可变,并且最大长度不会超过65535,你可以使用 VARCHAR 类型。
如果你的字段长度可变,并且最大长度可能超过65535,你可以使用 TEXT 或 BLOB 类型。
例子
4 例子:
CREATE TABLE example (
char_column CHAR(10),
varchar_column VARCHAR(10)
);
INSERT INTO example (char_column, varchar_column) VALUES ('test', 'test');
SELECT CONCAT(char_column, ' '), CONCAT(varchar_column, ' ') FROM example;
在这个例子中,char_column 将显示为 'test ',varchar_column 将显示为 ‘test’,因为 CHAR 类型字段后添加了空格以达到指定的长度,而 VARCHAR 类型字段则只存储了实际的字符串 ‘test’。