在MySQL数据库varchar规则限制
1。限制性规则
定义字段时,字段的限制有以下规则:
(a)存储限制
VARCHAR字段存储实际内容外聚集索引。内容的开头是1到2字节,表示实际长度(2字节长于255),因此最大长度不能超过65535。
B)代码长度限制
如果字符类型是GBK,每个字符占用2个字节最多和最大长度不能超过32766。
如果字符类型是UTF8,每个字符占用3个字节最多和最大长度不能超过21845。
如果以上超出限制在定义的时候,VARCHAR字段是强制转换为文本型,并产生警告。
线长度限制
在实际应用中的varchar长度限制是线的definition.mysql长度要求线不应超过65535定义的长度。如果定义表的长度超过此值,提示error1118(42000):rowsizetoolarge。themaximumrowsizefortheusedtabletype,notcountingblobs,is65535.youhavetochangesomecolumnstotextorblobs。
2。计算实例
给出了两个实例来说明实际长度的计算。
a)如果一个表只有一个VARCHAR类型,定义为createtablet4(cvarchar = GBK字符集(n)),n是最大值(65535-1-2)/ 2 = 32766。
减少1的原因是实际的行存储是从第二个字节开始的;
2的减少是由于2字节长度的varchar头。
2的原因是字符编码是GBK。
B)如果一个表定义为createtablet4(CINT,c2char(30),c3varchar(n))的字符集utf8,N是最大值(65535-1-2-4-30 * 3)/ 3 = 21812。
以同样的理由减去上面的1和2;
减少4的原因是int型C占4字节;
减少30×3的原因是:(30)字符占用90字节,并且代码UTF8。
如果varchar超过B以上规则和强制转换为文本型,每个字段占用11字节定义的长度,当然这不是VARCHAR。
在MySQL数据库varchar的限制规则的知识介绍到这里,希望本文的介绍可以奖励你!