mysql里的char怎么添加数据类型_MySQL CHAR 数据类型

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使用比较运算符(如=,<>,>,

请注意,当您使用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数据类型以将其应用于数据库设计中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值