MySQL 中 char 和 varchar 的区别是什么?
char
和 varchar
是 MySQL 中两种存储字符串类型的数据类型,它们的区别主要在于存储方式和性能方面。
- 存储方式不同:
char
是一种固定长度的数据类型,定义时必须指定长度,它会占用固定长度的存储空间。例如,定义一个 char(10)
的字段,即使实际存储的字符串长度不到 10 个字符,也会占用 10 个字符的存储空间。
varchar
是一种可变长度的数据类型,定义时也必须指定最大长度,但实际存储的字符串长度可以在 1 到最大长度之间变化,它只会占用实际存储的字符串长度加上一定的存储空间,因此可以节省存储空间。
- 性能方面:
由于 char
是一种固定长度的数据类型,所以当使用 char
类型存储字符串时,MySQL 在存储时不需要额外计算存储空间大小,因此在一些场景下 char
类型的性能会略优于 varchar
类型。
示例代码如下:
CREATE TABLE char_demo (
id INT PRIMARY KEY AUTO_INCREMENT,
name_char CHAR(10),
name_varchar VARCHAR(10)
);
INSERT INTO char_demo (name_char, name_varchar) VALUES ('hello', 'hello');
SELECT * FROM char_demo;
在上述示例代码中,我们创建了一个 char_demo
表,其中包含一个 char
类型的字段 name_char
和一个 varchar
类型的字段 name_varchar
。然后我们向表中插入一条记录,分别使用 char
和 varchar
类型存储字符串 'hello'。最后我们查询表中所有记录。
运行结果如下:
+----+-----------+--------------+
| id | name_char | name_varchar |
+----+-----------+--------------+
| 1 | hello | hello |
+----+-----------+--------------+
从结果可以看出,使用 char
存储字符串 'hello' 时,它会自动在后面填充空格,以达到指定的长度 10,而使用 varchar
则不会填充空格,它会根据实际长度存储字符串。