亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

MySQL數據庫varchar的限制規則說明

標簽:
MySQL

MySQL数据库中varchar最大长度是多少?其实这不是一个固定的数字,varchar的长度是有限制规则的。本文我们就来介绍一下MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,接下来就让我们一起来了解一下这部分内容。

1、限制规则

字段的限制在字段定义的时候有以下规则:

a)存储限制

varchar字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

b)编码长度限制

字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。

c)行长度限制

导致实际应用中varchar长度限制的是一个行定义的长度。MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.YouhavetochangesomecolumnstoTEXTorBLOBs。

2、计算例子

举两个例说明一下实际长度的计算。

a)若一个表只有一个varchar类型,如定义为createtablet4(cvarchar(N))charset=gbk;则此处N的最大值为(65535-1-2)/2=32766。

减1的原因是实际行存储从第二个字节开始';

减2的原因是varchar头部的2个字节表示长度;

除2的原因是字符编码是gbk。

b)若一个表定义为createtablet4(cint,c2char(30),c3varchar(N))charset=utf8;则此处N的最大值为(65535-1-2-4-30*3)/3=21812。

减1和减2的原因与上例相同;

减4的原因是int类型的c占4个字节;

减30*3的原因是char(30)占用90个字节,编码是utf8。

如果varchar超过上述的b规则,被强制转成text类型,则每个字段占用定义长度为11字节,当然这已经不是“varchar”了。

关于MySQL数据库中varchar的限制规则的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消