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) );
状态列的数据类型为CHAR。
最多可容纳3个字符。
其次,在mysql_char_test表中插入两行。
INSERT INTO mysql_char_test(status) VALUES('Yes'),('No');
第三,使用length函数获取每个CHAR值的长度。
SELECT status, LENGTH(status) FROM mysql_char_test;
第四,插入一个CHAR值,并带有前导和尾随空格。
INSERT INTO mysql_char_test(status) VALUES(' Y ');
最后,查询插入的值,您将看到MySQL删除了尾随空格。
SELECT status, LENGTH(status) FROM mysql_char_test;
比较MySQL CHAR值
在存储或比较CHAR值时,MySQL使用分配给该列的字符集排序规则。
当使用比较运算符(例如=,<>,>,<等)比较CHAR值时,MySQL不考虑尾随空格。
请注意,当您使用CHAR值进行模式匹配时,LIKE运算符会考虑尾随空格。
在前面的示例中,我们将值Y与前导空格和尾随空格一起存储。
但是,当我们执行以下查询时:
SELECT * FROM mysql_char_test WHERE status = 'Y';
MySQL不返回任何行,因为它不考虑尾随空间。
为了与" Y"匹配,我们需要删除尾随空格,如下所示:
SELECT * FROM mysql_char_test WHERE status = ' Y';
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 Code: 1062. Duplicate entry 'N' for key 'uidx_status'
在本教程中,我们向您介绍了MySQL CHAR数据类型及其功能。
现在,您应该对CHAR数据类型有了充分的了解,可以将其应用于数据库设计中。