mysql char 最大长度_MySQL 中 VARCHAR 最大长度及 CHAR 和 VARCHAR 的区别

问题

创建一个9个字段的表,所有的字段都为VARCHAR类型,其中前8个字段都是最大能放下7279个字符,允许为空,字符集类型为latin1,即一个字符只占一个字节,建表语句如下:

CREATE TABLE test_varchar_length6(

a VARCHAR(7279),

b VARCHAR(7279),

c VARCHAR(7279),

d VARCHAR(7279),

e VARCHAR(7279),

f VARCHAR(7279),

g VARCHAR(7279),

h VARCHAR(7279),

i VARCHAR(?)

)DEFAULT CHARSET=latin1

那么i的最大字符数为多少?问题最后揭晓。

VARCHAR 定义

VARCHAR是变长字符串,便于理解,使用CHAR定长类型来对比介绍。

VARCAHR,最多存储4个字符,有几个字符存储几个。存储字节数=数据值的字节和+1字节(长度标识,后面会讲到)

CHAR(4),最多存储4个字符,不足4个尾部用空格填满。存储字节数=数据值的字节和+补位空格数

概括地说,VARCHAR和CHAR都是 MySQL 的字符类型,存储多个字符、可设置最大存储的字符数,存储开销与数据长度、字符集有关。是MySQL 最常用的字符串类型。

CHAR和VARCHAR具体对比:

特性

CHAR

VARCHAR

长度

定长,固定字符数最大255个字符数据长度不足声明值时,在尾部自动填充空格

长度可变,可设置最大存储字符数最大不超过行大小(默认65535字节,注意是字节,下面会讲原因)

前缀

1~2字节,看列长度是否可能超过255字节比如VARCHAR(100),字符集为UTF8,则字节最大可能为300字节,所以会使用2个字节标识长度

有否尾部空格

长度不足默认用空格填满检索和获取时会自动去除

不会自动填充空格输入值就包含空格,则会存储,检索和获取数据都会体现

超长处理

超长部分如果是空格自动截断如果是字符,严格模式下会报错

超长部分如果是空格自动截断,并生成警告如果是字符,严格模式下会报错

存储开销

数据值的字节和 + 补位空格数

数据值的字节和 + 长度标识字节数

如果开启PAD_CHAR_TO_FULL_LENGTH模式,检索时尾部空格不会去除

CHAR超过255字符会报错,提示使用TEXT或BLOB:

ERROR 107

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值