Mysql的int(1)和int(M)的区别

MySQL中我们建表的时候,类型可以用int(10), 这是什么意思呢?
首先我们看 MySQL的整型类型有这样几种:

类型占用字节
tinyint1
smallint2
mediumint3
int4
bigint8

这是决定存储需要占用多少字节,那么后边的数字(M)代表什么意思呢?
tinyint(M), M默认为4;
SMALLINT(M), M默认为6;
MEDIUMINT(M), M默认为9;
INT(M),M默认为11;
BIGINT(M),M默认为20.
M表示最大显示宽度, 建表若设置了zerofill(0填充), 会在数字前面补充0.

总结:
1.规定类型之后,存储是定长的,int(1)和int(4)从本身长度还是存储方式上都是一样的。mysql里,int(1)和int(4)的区别就是显示的长度,但是要设置一个参数:如果列制定了zerofill 就会用0填充显示,如2 int(3)指定后就会显示为002

2.int 存储占4个字节, tinyint 存储占1个字节,存储长度决定了他们表示的数字范围不同。int表示的数字范围是:从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。tinyint 表示的范围是0-255之间的数字。

3.tinyint(1),和tinyint(3)没什么区别,存123都能存的下,而如果tinyint(3) zerofill 的话,插入值 12,会存储012,zerofill自动左边补零,这才是限制显示长度。

4.数字类型后面括号中的数字,不表示长度,表示的是显示宽度,这点与 varchar、char 后面的数字含义是不同的。
varchar(5) 这里的5 限制的是储存字符的个数,字符不分贵贱(不分 中文、英文、数字…)!!!
varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关
utf-8, 一个汉字3字节 英文字母1字节

结论: mysql会忽略具体的存储细节,但是当mysql把数据存储到硬盘上的时候肯定是以(字节)的方式去存储,那么占用的的空间肯定会根据不同的编码格式 32✖️3 或 32✖️2这种去存储。

参考文章:
https://www.cnblogs.com/bulh/articles/10650276.html
https://blog.csdn.net/hongchangfirst/article/details/50707415

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值