一、 INT类型简介
在MySQL中,INT代表整数。整数可以写成没有分数的数值,例如,它可以是1,100,4,-10等,它不能是1.2,5/3等。整数可以是零,正和负。
MySQL支持所有标准SQL整数类型INTEGER、INT和SMALLINT。 此外,MySQL提供TINYINT, MEDIUMINT,BIGINT作为标准SQL的扩展。
| 类型 | 字节Bytes | 有符号范围Signed | 无符号范围Unsigned |
|---|---|---|---|
| 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 | -2^63到2^63-1 | 0到18446744073709551615 |
二、 在列中使用INT
由于整数类型表示精确数字,因此通常将其用作表的主键。此外,INT列可以具有AUTO_INCREMENT属性。
当在INT AUTO_INCREMENT列中插入NULL值或0时,列的值将设置为下一个序列值。 请注意,序列值以1开始。
在AUTO_INCREMENT列中插入不为NULL或零的值时,列接受该值。 此外,序列将重置为插入值的下一个值。
自MySQL 5.1版本起,AUTO_INCREMENT列只接受正值。AUTO_INCREMENT列不支持负数值。
三、 MySQL INT和显示宽度属性以及填充0
MySQL提供了一个扩展,允许您指定显示宽度以及INT数据类型。显示宽度包含在INT关键字后面的括号内,例如,INT(5)指定一个显示宽度为五位数的INT。
int(5) 其实是和另一个属性 zerofill 配合使用的,表示如果该字段值的宽度小于 5 时,会自动在前面补 0 ,如果宽度大于等于 5 ,那就不需要补 0 。
注意前提是给该字段添加了 zerofill 属性,不然 int(5) 不起作用。
注意如果要存储带符号的整形数,是不支持 zerofill 属性的,会自动转换为 0,在一些涉及递减的业务中需要注意考虑一下。
显示宽度属性不能控制列可以存储的值范围。显示宽度属性通常由应用程序用于格式化整数值。 MySQL将显示宽度属性作为返回结果集的元数据。
除了显示宽度之外,MySQL还提供了非标准的ZEROFILL属性。 在这种情况下,MySQL将空格替换为零。请参考以下示例。