再过5分钟你就能了解MySQL中的int类型啦

469 阅读2分钟

一、 INT类型简介

在MySQL中,INT代表整数。整数可以写成没有分数的数值,例如,它可以是11004-10等,它不能是1.25/3等。整数可以是零,正和负。 MySQL支持所有标准SQL整数类型INTEGERINTSMALLINT。 此外,MySQL提供TINYINTMEDIUMINTBIGINT作为标准SQL的扩展。

类型字节Bytes有符号范围Signed无符号范围Unsigned
TINYINT1-128到1270到255
SMALLINT2-32768到327670到65535
MEDIUMINT3-8388608到83886070到16777215
INT4-2147483648到2147483647(二十亿)0到4294967295
BIGINT8-2^63到2^63-10到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将空格替换为零。请参考以下示例。