MySQL CHAR 数据类型
简介:在本教程中,您将了解MySQL CHAR数据类型以及如何在数据库表设计中应用它。
MySQL CHAR数据类型简介
CHAR
数据类型是MySQL中的固定长度的字符类型。我们经常声明CHAR
类型的长度,指定我们要存储的最大字符数。例如,CHAR(20)
最多可以容纳20个字符。
如果要存储的数据是固定大小,则应使用CHAR
数据类型。与VARCHAR
这种情况相比,您将获得更好的性能。
CHAR
数据类型的长度可以是0到255之间的任何值。当您存储CHAR
值时,MySQL会将其值用空格填充到您声明的长度。
当您查询CHAR
值时,MySQL将删除尾随空格。
请注意,如果启用PAD_CHAR_TO_FULL_LENGTH SQL模式,MySQL将不会删除尾随空格。
以下语句创建一个表包含CHAR
列。
CREATE TABLE mysql_char_test ( status CHAR(3) );status列具有
CHAR
数据类型。它最多可容纳3个字符。
现在,我们在mysql_char_test
表中插入2行。
INSERT INTO mysql_char_test(status) VALUES('Yes'),('No');我们使用length函数来获取每个CHAR值的长度。
SELECT status, LENGTH(status) FROM mysql_char_test;
+--------+----------------+ | status | LENGTH(status) | +--------+----------------+ | Yes | 3 | | No | 2 | +--------+----------------+ 2 rows in set (0.00 sec)以下语句插入
CHAR
带有前导和尾随空格的值。
INSERT INTO mysql_char_test(status) VALUES(' Y ');但是,当我们检索值时,MySQL会删除尾随空格。
SELECT status, LENGTH(status) FROM mysql_char_test;
+--------+----------------+ | status | LENGTH(status) | +--------+----------------+ | Yes | 3 | | No | 2 | | Y | 2 | +--------+----------------+ 3 rows in set (0.00 sec)
比较MySQL CHAR值
在存储或比较CHAR
值时,MySQL使用分配给列的字符集 排序规则。
CHAR
使用比较运算符(如=,<>,>,<等)比较值时,MySQL不考虑尾随空格。
请注意,当您使用CHAR
值进行模式匹配时,LIKE运算符会考虑尾随空格。
在前面的示例中,我们使用前导和尾随空格存储值Y. 但是,当我们执行以下查询时:
SELECT * FROM mysql_char_test WHERE status = 'Y';
Empty set (0.00 sec)MySQL不返回任何行,因为它不考虑尾随空格。要匹配'Y',我们需要删除尾随空格,如下所示:
SELECT * FROM mysql_char_test WHERE status = ' Y';
+--------+ | status | +--------+ | Y | +--------+ 1 row in set (0.00 sec)
MySQL CHAR和UNIQUE索引
如果CHAR
列具有UNIQUE
索引并且您插入的值与许多尾随空格中的现有值不同,则MySQL将因重复键错误而拒绝更改。
请参阅以下示例。
首先,为mysql_char_test
表的status
列创建唯一索引。
CREATE UNIQUE INDEX uidx_status ON mysql_char_test(status);其次,在表
mysql_char_test
中插入一个新行。
INSERT INTO mysql_char_test(status) VALUES('N');第三,插入以下值将导致重复键错误。
INSERT INTO mysql_char_test(status) VALUES('N ');
ERROR 1062 (23000): Duplicate entry 'N' for key 'uidx_status'在本教程中,我们向您介绍了MySQL CHAR数据类型及其功能。现在,您应很好地理解CHAR数据类型以将其应用于数据库设计中。