• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql的VACHAR的最大长度到底是多少_MySQL

mysql 搞代码 4年前 (2022-01-09) 27次浏览 已收录 0个评论

gaodaima.com

今天群里有人问:

varchar 不是最大应该只可以设置65532(第一个字节+两个长度字节)吗 ,但是为什么可以设置成65533

以前一直都认为有两个字节来记录长度(长度小也可以用一个字节记录),所以这个问题当时觉得就挺无聊的

不过后来群里有人给了解释,突然才发现原来事情不是这么简单

MYSQL COMPACT格式,每条记录有一个字节来表示NULL字段分布,如果表中有字段允许为空,则最大只能定到65532,如果没有字段允许为空,则那个字节可以节省,最大可以定义到65533,不知道是不是这个原因

于是上网看了些资料,又在本地做了些实验,原来vachar的最大长度真的是不定的(根据是否有非空字段来决定)

在本地做了下实验,innodb+latin的环境

1 — success 2 drop table if exists test; 3 create table test(name varchar(65533) not null)engine=innodb DEFAULT CHARSET=latin1 4 5 — too large 6 drop table if

本文来源gao!daima.com搞$代!码#网#

exists test; 7 create table test(name varchar(65533))engine=innodb DEFAULT CHARSET=latin1

对于第二种情况,允许空字段的时候是不能加到65533的长度的,最大只能到65532,到底应该是引文的那种说法。

网上也有人做了类似的实验,参考http://stackoverflow.com/questions/8295131/best-practise-for-sql-varchar-column-length

1 name varchar(100) not null will be 1 byte (length) + up to 100 chars (latin1) 2 3 name varchar(500) not null will be 2 bytes (length) + up to 500 chars (latin1) 4 5 name varchar(65533) not null will be 2 bytes (length) + up to 65533 chars (latin1) 6 7 name varchar(65532) will be 2 bytes (length) + up to 65532 chars (latin1) + 1 null byte

总结一下,原来mysql的vachar字段的类型虽然最大长度是65535,但是并不是能存这么多数据,最大可以到65533(不允许非空字段的时候),当允许非空字段的时候只能到65532,。

gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql的VACHAR的最大长度到底是多少_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址