Mysql的int(11)、int(10) unsigned理解

mysql的int类型

img

对于 int 类型的一些基础知识其实上图已经说的很明白了。

int(11)

在这里想讨论下常用的 int(11) 代表什么意思,与varchar不同11 代表的并不是长度,而是字符的显示宽度,在字段类型为 int 时,无论你显示宽度设置为多少,int 类型能存储的最大值和最小值永远都是固定的。
当 int 字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为 ZEROFILL 属性会隐式地将数值转为无符号型,因此不能存储负的数值。

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

int(10) unsigned

在mysql中,如果我们创建一个INT的字段dataType并且没有指定任何长度/值,那么它会自动变为int(11),如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL,那么它将转为int(10)

参考

https://segmentfault.com/a/1190000012479448
http://www.it1352.com/906871.html

发布了77 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/baidu_36943075/article/details/100763990