700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql字段最大长度_MySQL各类型字段可定义最大宽度

mysql字段最大长度_MySQL各类型字段可定义最大宽度

时间:2021-11-29 04:09:11

相关推荐

mysql字段最大长度_MySQL各类型字段可定义最大宽度

今天浏览mysql的官网文档,无意中看到如图划线部分一句话,引起了我的兴趣,所以决定做实验官方所言。

条例1.创建数据表时,所有字段定义时"宽度之和"不得超过65535字节;

条例2.理论上的char(255)、varchar(65532)、varbinary(65532)字段最大值定义,实际情形是达不到的,因为首先要遵守条例1。

实验测得规律(MySQL5.7):

tinyint 定义占1字节

smallint 定义占2字节

int 定义占4字节

char(2) 定义占2*3=6字节(当存储3个中文时每字占3字节,所以占6字节)

char(3) 定义占3*3=9字节

varchar(10) 定义占10*3=30字节(当存储10个中文时每字占3字节,所以占30字节)

varbinary(8) 定义占8+1=9字节

text 定义占10字节

mediumtext 定义占10+1=11字节

decimal(10,2) 定义占5字节

实验

实验1:只有一个ch20字段

drop table `tab4`;

create table `tab4`(

`ch20` varbinary(65532) COMMENT '定义占65532字节')ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';

实验2:添加 `num1` tinyint 字段

drop table `tab4`;

create table `tab4`(

`num1` tinyint,

`ch20` varbinary(65531) COMMENT '定义占65532-1 = 65531 字节')ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';

实验3:再添加 `num2` int字段

drop table `tab4`;

create table `tab4`(

`num1` tinyint,

`num2`int,

`ch20` varbinary(65527) COMMENT '定义占65532-1-4 = 65527 字节')ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';

实验4:再添加 `chr1` char(4) 字段

drop table `tab4`;

create table `tab4`(

`num1` tinyint,

`num2`int,

`chr1`char(4),

`ch20` varbinary(65515) COMMENT '定义占65532-1-4-4*3 = 65515 字节')ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';

实验5:再添加 `content` text 字段

drop table `tab4`;

create table `tab4`(

`num1` tinyint,

`num2`int,

`chr1`char(4),

`content` text,

`ch20` varbinary(65505) COMMENT '定义占65532-1-4-4*3-10 = 65505 字节')ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';

小结:新添加的字段“取决于最大行大小”是指,`ch20` varbinary(65505) 与其它所有字段共享宽度,此消彼长;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。