mysql 中char(8)_mysql8 参考手册--CHAR和VARCHAR类型区别

CHAR和VARCHAR在MySQL中存储和检索方式有所不同。CHAR是固定长度,用空格填充到指定长度,检索时删除尾随空格;VARCHAR是可变长度,存储时不会填充,最多可存储65535字节。在存储超长的CHAR值时,InnoDB可能会将其编码为可变长度字段。两者在排序和比较时,尾随空格处理方式不同,这可能影响索引和唯一性检查。
摘要由CSDN通过智能技术生成

CHAR和VARCHAR类型相似,但它们被存储和检索的方式不同。它们的最大长度以及是否保留尾随空格也不同。

CHAR和VARCHAR类型的声明,其长度指示要存储的最大字符数。例如, CHAR(30)最多可容纳30个字符。

一个长度CHAR列被固定在创建表声明的长度。长度可以是0到255之间的任何值。CHAR 存储值时,它们会用空格右填充到指定的长度。当CHAR被检索到的值,拖尾的空格被删除,除非 PAD_CHAR_TO_FULL_LENGTH启用SQL模式。

VARCHAR列中的 值是可变长度的字符串。长度可以指定为0到65535之间的值。a的有效最大长度 VARCHAR取决于最大行大小(65,535字节,在所有列之间共享)和所使用的字符集。请参见第8.4.7节“表列数和行大小的限制”。

与相比CHAR, VARCHAR值存储为1字节或2字节长的前缀加数据。长度前缀指示值中的字节数。如果值要求不超过255个字节,则一列使用一个长度字节;如果值可能需要不超过255个字节,则一列使用两个长度字节。

如果未启用严格的SQL模式,并且您为CHAR或VARCHAR列分配的值 超过了列的最大长度,则该值将被截断以适合并生成警告。对于非空格字符的截断,可以使用严格的SQL模式导致发生错误(而不是警告)并抑制该值的插入。请参见第5.1.11节“服务器SQL模式”。

对于VARCHAR列,无论使用哪种SQL模式,插入前都会截断超出列长度的尾随空格,并生成警告。对于 CHAR列,无论SQL模式如何,都将以静默方式从插入值中截断多余的尾随空格。

VARCHAR值在存储时不会填充。根据标准SQL,在存储和检索值时保留尾随空格。

下表说明了之间的区别, CHAR并VARCHAR显示了将各种字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值