MySQL数据库varchar的限制规则说明
2011-08-15 00:00
507 查看
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的限制规则的知识就介绍到这里了,希望本次的介绍能够对您有所收获!
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的限制规则的知识就介绍到这里了,希望本次的介绍能够对您有所收获!
相关文章推荐
- MySQL数据库varchar的限制规则说明
- varchar最大长度限制规则
- CentOS7.2 调整mysql数据库最大连接数及系统默认限制说明
- mysql数据库var varchar int 简单说明
- Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案
- 以Drools5.5为例说明“规则引擎在业务系统中应用”---规则引擎与业务系统交互
- Apache的URL重写规则的标志详细说明
- SQL SERVER 的排序规则说明
- 限制input输入符合规则的浮点数
- 解决mysql数据库导入数据限制大小
- mysql数据库 not null 的限制解释
- Eslint 规则说明
- MySQL数据库中CHAR与VARCHAR之争
- Mysql数据库中把varchar类型转化为int类型的方法
- pt-online-schema-change使用说明、限制与比较
- Python 中特殊变量/方法命名规则说明(特别是私有变量)及使用实例
- 压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明
- 在utf8规则下 mysql varchar(50)能存50个汉字
- MSSQL数据类型及长度限制详细说明
- MSSQL数据类型及长度限制详细说明