MySql数据类型限制详解

前言

此次学习已innodb引擎、utf8字符集为参考配置

SMALLINT

smallint(M),M只是显示宽度,并不是指定存储值的数值范围,如果数值的宽度没有超过M,那么会在数值左边填充0值(使用zerofill属性可以设置填充0功能,这个需要根据业务需要设置,但是MySQL 8.0.17已废弃),如果数值的宽度超过了M,并且没有超过smallint的值范围(-32768 to 32767,-2的15次方至 2的15次方-1)

CHAR

每个列已固定长度声明,长度范围是0-255个字符,如果长度不够,则会从右边填充空格,当CHAR的数值被遍历时,追加的空格将会被删除,除非开启PAD CHAR TO FULL LENGTH模式被开启

VARCHAR

声明一个长度表明你想存储最大数量字符串,例如VARCHAR(30)表示能够存储30个字符的长度

列数量限制

MySql最多有4096个列的强制限制,具体最大限制受一些因素的影响

行容量限制

每一行最大容量限制是655355个字节,每个字段的大小如果超过了255个字节的话,将会有两个字节的存储字段的长度,而这两个字节会计算至整个行占用的空间大小中,计算整个行大小的时候需要把这个影响因素加进去

CHAR和VARCHAR存储占用的空间区别

M表示字符串长度,w表示每个字符占用的字节个数,x表示用于表明字段时间长度的字节数(255个以内占用1个字节,超过255占用2个字节),L表示实际存储的值的字符的个数。
char(M)类型的字段,实际占用的空间是Mw+x
varchar(M)类型的字段,实际占用的空间是L
M+x
综上,也就是说char的占用的空间是固定的,值是否达到M,都会占用M*w+x的空间,而varchar就不一样了,占用的空间是可变的,和存储的值有关系。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值