mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢.
 
当时我虽然知道int(1),这个长度1并不代表允许存储的宽度,但却没有一个合理的解释. 或者说对这个长度也没有真正的研究过到底代表什么, 平时都用int(11), 也不知道为什么要11位. 所以我在网上查阅了一些资料, 也仔细的看了mysql手册关于int data type的说法.
以下是每个整数类型的存储和范围(来自mysql手册)
 
类型
字节
最小值
最大值
(带符号的/无符号的)
(带符号的/无符号的)
TINYINT
1
-128
127
0
255
SMALLINT
2
-32768
32767
0
65535
MEDIUMINT
3
-8388608
8388607
0
16777215
INT
4
-2147483648
2147483647
0
4294967295
BIGINT
8
-9223372036854775808
9223372036854775807
0
18446744073709551615
表格一共有四列分别表式:字段类型, 占用字节数, 允许存储的最小值, 允许存储的最大值.
我们拿int类型为例:
int类型, 占用字节数为4byte, 学过计算机原理的同学应该知道, 字节(byte)并非是计算机存储的最小单位, 还有比字节(byte)更小的单位, 也就是位(bit),一个位就代表一个0或1; 8个位组成一个字节; 一般字节用大写B来表示byte, 位用小写b来表示bit.
计算机存储单位的换算:
1B=8b
1KB=1024B
1MB=1024KB
 
那么根据int类型允许存储的字节数是4个字节, 我们就能换算出int UNSIGNED(无符号)类型的能存储的最小值为0, 最大值为4294967295(即4B=32b, 最大值即为32个1组成);
接下来我们再说说我们建表时的字段长度到底是怎么一回事.
CREATE TABLE `test` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`number` INT( 5 ) NOT NULL
) ENGINE = MYISAM ;
以test表的number字段为例, 大家看到我建的是int(5)
mysql手册中这个长度/值用"M"来表示的. 细心的朋友应该有注意到过mysql手册上有这么一句话:  M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关;
这句话看上去不太容易理解, 因为这里有个关键词容易让我们混淆, "最大显示宽度"我们第一反应是该字段的值最大能允许存放的值的宽度. 以为我们建了int(1),就不能存放数据10了, 其实不是这个意思.
这个M=5我们可以简单的理解成为, 我们建立这个长度是为了告诉MYSQL数据库我们这个字段的存储的数据的宽度为5位数,  当然如果你不是5位数(只要在该类型的存储范围之内)MYSQL也能正常存储,  这也就能解释以上标红的话.
我们把这个字段的"属性"修改为UNSIGNED ZEROFILL看一下效果.
我们看到现在我的number字段, 长度(M)=5, 属性=UNSIGNED ZEROFILL(无符号,用0来填充位数),  设置这个属性后我往表时插入数据,系统会自动把number字段M不够5位的在左侧用0来填充; 效果如下
手册上还有这么一句话"当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度". 这也让我不禁感叹这个宽度到底如何设置比较合适?
但有一点看完该文档你应该清楚的知道, 长度M与你存放的数值型的数的大小无关.

转载于:https://www.cnblogs.com/rxbook/p/6049858.html

关于mysql中int(1)中int后面的数字相关推荐

  1. MySQL番外篇:INT、CHAR以及VARCHAR数据类型中M的含义

    MySQL中INT.CHAR以及VARCHAR数据类型中M的含义 在MySQL数据库使用过程中,对于int(M).tinyint(M).char(M).varchar(M)等,这个M值到底代表什么意思 ...

  2. mysql bigint 运算_mysql中int、bigint、smallint 和 tinyint的区别详细介绍

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容, ...

  3. mysql int zerofill_Mysql 中int[M]—zerofill-阿里云开发者社区

    我们在定义数字类型的数据类型的时候,往往考虑该数字类型的数据能否装的下该字段的最大值,如状态位的字段:tinyint,表的主键:int,或者bigint,今天在看到开发同学提交表结构设计文档中看到数值 ...

  4. val什么意思vb中的属性值_老司机带你探索Mysql中int(1)、int(10)、int(11)的区别是什么?...

    在上一篇原创文章MySQL一个表的自增id用完了,背井大佬让我用这些姿势再往里插数据,最后留下了一个问题,大家知不知道int(1)和int(11)有什么区别,没有小伙伴互动回答,只有一位老哥让我说一下 ...

  5. mysql int tinyint_MySQL中int(M)和tinyint(M)数值类型中M值的意义

    首先,我们创建一个数据表test: mysql> CREATE TABLE test( -> id1 int(1), -> id2 tinyint(1) ->); 我们给id1 ...

  6. 字段类型:mysql中int(3)与int(11)有什么区别吗?优化数据库字段占据磁盘的大小

    文章目录 案例 数值类型 日期和时间类型 字符串类型 案例 int(M) 注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存 ...

  7. mysql int(3)_MySQL中int(11)与int(3)的区别_MySQL

    11.2. 数值类型 MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT.RE ...

  8. mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读

    明天将来诰日看项目的数据库构造设计,收现一个奇异的地圆. `xxx_detail`  `delflag` int(1) NOT NULL DEFAULT "0" COMMENT & ...

  9. MySQL中建表时的int(m)中的m代表什么意思?

    在我们使用MySQL数据库管理工具建表时,经常在使用选择整数类型比如int后会选择"长度"这一属性值,如下图: 我们也可以使用下列sql语句在建表: CREATE TABLE `t ...

最新文章

  1. NETGEAR拒绝连接请求_3分钟理解HTTP的请求与响应
  2. 十条nmap常用的扫描命令
  3. [导入]SunriseUpload.0.9.1的源码分析(七)
  4. Pandas知识点-添加操作append
  5. jenkins java版本_安装jenkins几个版本貌似都有问题
  6. MainFrame小结(20110812)--MOVE ALL与INITIALIZE(cobol)
  7. 传递function_JS中!function(){}()的理解
  8. 【数据科学】探索性数据分析
  9. 《JavaScript 模式》读书笔记
  10. 实战爬虫:python爬虫学习笔记之爬取大前端网站
  11. 信息安全等级保护建设(二,三级)需上的设备
  12. MT4API跟单软件详细分享
  13. 数据地图搜索功能模块项目总结【springBoot+Elasticsearch】
  14. POI给word中插入图片后打不开的bug
  15. 人工智能python课程总结1500字_人工智能学习心得
  16. Linux微信安装网页版
  17. foobar2000使用cue文件播放时出现Unable to open item for playback (Object not found):的问题解决
  18. vue3的生命周期函数
  19. capturing self strongly in this block is likely to lead to a retain cycle 警告解决
  20. MySQL-存储IP地址一文解决(随便问~)

热门文章

  1. 【图像分类】 基于Pytorch的多类别图像分类实战
  2. 【杂谈】如何应对烦人的开源库版本依赖-做一个心平气和的程序员?
  3. 全球及中国燃料乙醇行业产量规模及供需前景分析报告2021-2027年
  4. 京东共聚黑山县三方合力-农民丰收节·万祥军:谋定智慧农业
  5. Hive的下载安装,以及配置mysql作为元数据库
  6. hashMap和hashTable的区别(个人总结)
  7. EXCLE使用中常用函数和公式
  8. 最小生成树之Kruskal
  9. SQL SERVER中架构的理解
  10. 通过自定义ISAPI Filter来禁止敏感文件的访问