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() COMMENT '定义占65532字节'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';
实验2:添加 `num1` tinyint 字段 drop table `tab4`; create table `tab4`(
`num1` tinyint,
`ch20` varbinary() 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() COMMENT '定义占65532-1-4 = 65527 字节'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';
实验4:再添加 `chr1` char() 字段 drop table `tab4`; create table `tab4`(
`num1` tinyint,
`num2` int,
`chr1` char(),
`ch20` varbinary() 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(),
`content` text,
`ch20` varbinary() COMMENT '定义占65532-1-4-4*3-10 = 65505 字节'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='实验表';
小结:新添加的字段“取决于最大行大小”是指,`ch20` varbinary(65505) 与其它所有字段共享宽度,此消彼长;
MySQL各类型字段可定义最大宽度的更多相关文章
- mysql int类型字段插入空字符串时自动转为0
mysql int类型字段插入空字符串时自动转为0 如果不想转的话可以修改配置文件 修改 my.ini 文件. # Set the SQL mode to strictsql-mode=”STRICT ...
- Mysql各种类型字段长度
1.数值类型 列类型 需要的存储量 TINYINT 1 字节 SMALLINT 2 个字节 MEDIUMINT 3 个字节 INT 4 个字节 INTEGER 4 个字节 BIGINT 8 个字节 F ...
- mysql变成类型字段varchar值更新变长或变短底层文件存储原理
为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者 ...
- MySQL 时间类型字段的分析
日期类型 存储空间 日期格式 日期范围---------- ...
- MySQL整数类型字段的长度总结
MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4)). 该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.(类似使用LPAD函数效果) 在INT( ...
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下: 1.CURRENT_TIMESTAMP 当要向 ...
- MYSQL SET类型字段的SQL查询某个字段保函某个值的查询
1.column set('hot','crazy','smart') //column字段(set属性)三个值 2.select * from table where FIND_IN_SET('h ...
- 扩展mybatis和通用mapper,支持mysql的geometry类型字段
因项目中需要用到地理位置信息的存储.查询.计算等,经过研究决定使用mysql(5.7版本)数据库的geometry类型字段来保存地理位置坐标,使用虚拟列(Virtual Generated Colum ...
- mysql语句中把string类型字段转datetime类型
mysql语句中把string类型字段转datetime类型 在mysql里面利用str_to_date()把字符串转换为日期 此处以表h_hotelcontext的Start_time和En ...
随机推荐
- electron——初探
是什么? Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时 ...
- MySQL整形手工注入
0x1 判断注入点: http://www.xxx.org/members.php?id=1 and 1=1 --+ # ture http://www.xxx.org/members.php?id= ...
- OC-RunLoop运行循环
RunLoop--运行循环 作用:死循环,保证程序不退出:监听事件 (所有事件都是有它监听的):等待用户的交互: 特性: ios中所有的事件监听全部由运行循环负责: 主线程的RunLoop在应用启动的 ...
- 第四篇Scrum冲刺博客
第四篇Scrum冲刺博客 一.站立式会议 提供当天站立式会议照片一张 二.每个人的工作 成员 已完成工作 明天计划完成的工作 遇到的困难 林剑峰 用户界面跳转到用户信息页面的按钮,设计用户信息页面 测 ...
- bootstrap基础样式学习(二)——栅格
(1)最外层必须使用容器 div.container或 div.container-fluid (2)容器可以放置任何内容,若想使用栅格系统必须用 div.row div.container > ...
- docker仓库资源的地址修改
docker仓库资源的地址修改 1.新增或者修改/etc/docker目录下的daemon.json文件 样例文件如下 { "registry-mirrors": ["h ...
- linux的initcall机制
linux的initcall机制(针对编译进内核的驱动) initcall机制的由来 我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者 ...
- Python进阶-VII 内置函数
一.内置函数引入 我们已经了解的有; print() input() range() next() dir() str() int() list() set() tuple() dict() he ...
- 2019SDN上机第2次作业
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创建拓扑: 拓扑支持OpenFlo ...
- 三层交换机RIP动态路由实验
一. 实验目的 1. 掌握三层交换机之间通过RIP协议实现网段互通的配置方法. 2. 理解动态实现方式与静态方式的不同 二. 应用环境 当两台三层交换机级联时,为了保证每台交换机上所连接的 ...