设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10426|回复: 0

详解Mysql中tinyint与int的区别

[复制链接]

85

主题

0

回帖

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2022-3-26 11:03:11 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
问题:int(1) 和 tinyint(1) 有什么区别呢?

像这样的设计,反正我是不会写int(1)的。
查了下,mysql中设置了储存类型后,储存是定长的,也就是说,
  1. int(1) 和 int(4) 在硬盘中所占的字节数都是一样的
复制代码

我们知道,int类型占4个字节,tinyint占1个字节。int(1) 和 int(4) 从本身长度还是存储方式上都是一样的,区别就是显示的长度不同,但是要设置一个参数:如果
  1. 列制定了zerofill 就会用0填充显示
复制代码
,int(4)指定后就会显示为0002。
  1. int(1)和tinyint(4) 相比,肯定int 大
复制代码

注意数字类型后面括号中的数字,不表示长度,表示的是显示宽度,这点与 varchar、char 后面的数字含义是不同的。
也就是说
  1. 不管 int 后面的数字是多少,它存储的范围始终是 -2^31 到 2^31 - 1
复制代码

综上整型的数据类型括号内的数字不管是多少,所占的存储空间都是一样
tinyint一个字节   smallint  两个字节   MEDIUMINT三个字节 
显而易见,
  1. int(1) 和 tinyint(1)
复制代码
,在设计数据库的时候应该
  1. 选择tinyint(1)
复制代码
。所
  1. 占的储存空间越少越好,当然要够用才行
复制代码
。像这样储存一个 个位数的字段,还是用tinyint(1)的好。
总结:

       
  • 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自动左边补零,这才是限制显示长度。
上面总结的有点乱。下面精简总结:

tinyint(1)  和 tinyint(3) 没什么区别,占用字节都是一位,存储范围都是一样的
  1. tinyint(3) zerofill
复制代码
,当插入的数据少于3位的时候,
  1. 左边自动补零
复制代码
,这才是限制显示长度
int(1) 和 tinyint(1) ,够用的情况下,
  1. 优先选择tinyint(1)
复制代码
,因为
  1. 占字节少、节省空间
复制代码

tinyint一个字节   smallint  两个字节   MEDIUMINT三个字节  int 4个字节  BIGINT 8个字节。
但是,varchar(5)  这里的5 限制的是储存字符的个数,字符不分贵贱(不分 中文、英文、数字...)。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表