对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来我都以为这代表着限制int的长度为11位,直到有天看到篇文章才明白,11代表的并不是长度,而是字符的显示宽度,在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定

当int字段类型设置为无符号填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。

插入两条数据

INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1);
INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
select * from int_demo;
id a b c d e
1 1 00000000001 1 00001 1
2 1234567890 01234567890 1234567890 1234567890 1234567890

注释:如果用navicate软件查询出来并不会显示左边的0,但把数据导出时可看到真实的数据,猜测是软件对数据格式进行了处理?

三、结论

从上个例子我们可以得出以下几个结论:

  1. 如果一个字段设置了无符号和填充零属性,那么无论这个字段存储什么数值,数值的长度都会与设置的显示宽度一致,如上述例子中的字段b,插入数值1显示为00000000001,左边补了10个零直至长度达到11位;
  2. 设置字段的显示宽度并不限制字段存储值的范围,比如字段d设置为int(5),但是仍然可以存储1234567890这个10位数字;
  3. 设置的字符宽度只对数值长度不满足宽度时有效,如d字段int(5),插入1时,长度不足5,因此在左边补充4个零直到5位,但是插入1234567890时超过了5位,这时的显示宽度就起不了作用了。

最新文章

  1. 关于display:none 和visibility:hidden 的区别
  2. Objective-C中的委托(代理)模式
  3. Freemarker使用入门
  4. ACM n-1位数
  5. ADO.NET测试题
  6. IOS开发-cell的动态高度
  7. SSH开发实践part4:Spring整合Struts
  8. PermGen space Eclipse 终极解决方案
  9. storm入门教程 第四章 消息的可靠处理【转】
  10. JSBinding+Bridge:逻辑代码中操作二进制数据
  11. [转载]Android相关开发网站
  12. js中的因数分解
  13. vs2010根据字符串内容添加断点
  14. Linux:最终用途cat命令查看不可见的字符
  15. PHP strtotime在linux服务器时间延迟8小时问题
  16. A* 寻路算法学习
  17. Lua中metatable和__index的联系
  18. 二:熟悉 TCP/IP 协议
  19. 洛谷mNOIP模拟赛Day1-分组
  20. ES6系列之箭头函数

热门文章

  1. C# 线程间互相通信 AutoResetEvent和ManualResetEvent
  2. Oracle em 此网站的安全证书存在问题
  3. [PHP] 算法-二位有序数组中查找的PHP实现
  4. [Python] Python基础字符串
  5. Android线程
  6. blfs(systemv版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具
  7. STOMP
  8. Python 练习:九九乘法表
  9. Python 字符编码简记
  10. Stackoverflow 珠玑:用于分组的 LINQ 扩展方法