整数类型中,int和integer类型是一模一样的,取值范围通过字节数可以计算出来,比如tinyint,字节数为1,也就是8位。那么无符号数的取值范围就是(0~2的8次方减1),有符号数的最大值是2的7次方减一,其他的同理。
mysql整形中各种类型所占用的字节数数固定的,但是mysql支持int(8)这种形式,这是什么呢?其实后面括号里面的数字表示的只是显示宽度,而不是字节数。如果定义时不指定显示宽度,则每种类型都会有自己的默认显示宽度
tinyint (4)
smallint(6)
mediumint(9)
int(11)
bigint(20)
从中可以看出规律,就是默认宽度的数值就是各个类型中取值范围的最大值的宽度。但是不知道为什么mediumint默认宽度为9,按这个道理来说应该是8
当制定显示宽度,比如int(4)后,当插入数据宽度为3,比如123,则结果显示为“空123”,如果插入12345,可以没问题,显示结果为“12345”,但是超过11位宽度,则结果会显示这个类型的最大值
比如我插入123456789123456789,结果为“2147483647”