从开发者角度谈Mysql(4):MySQL中int(2)与int(11)的区别

2018-02-27 11:44:47来源:https://www.jianshu.com/p/39d57a1c6f6d作者:匠心零度人点击

分享



匠心零度 转载请注明原创出处,谢谢!



知识点

int(M) 中的 M 指示最大显示宽度,最大有效显示宽度是255,且显示宽度与存储大小或类型包含的值的范围无关。


首先说一下 MySQL 的数值类型,MySQL 支持所有标准 SQL 数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。关键字 INT 是 INTEGER 的同义词,关键字 DEC 是 DECIMAL 的同义词。


BIT 数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB 表。 作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。













































































类型字节最小值最大值
(带符号的/无符号的)(带符号的/无符号的)
TINYINT1-128127
0255
SMALLINT2-3276832767
065535
MEDIUMINT3-83886088388607
016777215
INT4-21474836482147483647
04294967295
BIGINT8-92233720368547758089223372036854775807
018446744073709551615

MySQL 类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。


当结合可选扩展属性 ZEROFILL 使用时, 默认补充的空格用零代替。例如,对于声明为 INT(5) ZEROFILL 的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当 MySQL 为复杂联接生成临时表时会遇到问题,因为在这些情况下 MySQL 相信数据适合原列宽度。


所有整数类型可以有一个可选(非标准)属性 UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。


总结

所以,int(2) 与 int(11) 后的括号中的字符表示显示宽度,整数列的显示宽度与 MySQL 需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int 类型的字段能存储的数据上限依旧是2147483647(有符号型)和4294967295(无符号型)。


如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!












最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台