13.1 INT
Last updated
Last updated
在本教程中,您将了解MySQL INT
或整数数据类型以及如何在数据库表设计中使用它。 另外,我们将向您展示如何使用表中整数列的显示宽度和ZEROFILL
属性。
在MySQL中,INT
代表整数。整数可以写成没有分数的数值,例如,它可以是1
,100
,4
,-10
等,它不能是1.2
,5/3
等。整数可以是零,正和负。
MySQL支持所有标准SQL整数类型INTEGER
、INT
和SMALLINT
。 此外,MySQL提供TINYINT
, MEDIUMINT
,BIGINT
作为标准SQL的扩展。
MySQL INT
数据类型可以是有符号或无符号。下表说明了每个整数类型的特性,包括以字节为单位的存储,最小值和最大值。
由于整数类型表示精确数字,因此通常将其用作表的主键。此外,INT
列可以具有AUTO_INCREMENT
属性。
当在INT AUTO_INCREMENT
列中插入NULL
值或0
时,列的值将设置为下一个序列值。 请注意,序列值以1
开始。
在AUTO_INCREMENT
列中插入不为NULL
或零的值时,列接受该值。 此外,序列将重置为插入值的下一个值。
我们来看一个使用带有AUTO_INCREMENT
属性的整数列的表的例子。
首先,使用以下语句创建一个名为items
的新表,其中整数列为主键:
可以在上面的CREATE TABLE语句中使用INT
或INTEGER
,因为它们是可互换的。 每当在items
表中插入一个新行时,item_id
列的值将增加1
。
接下来,以下INSERT语句在items
表中插入三行数据。
然后,使用以下SELECT语句从items
表查询数据:
之后,插入一个新的行,该行的item_id
列的值要明确指定。
因为item_id
列的当前值为10
,所以序列将重置为11
。如果插入新行,则AUTO_INCREMENT
列将使用11
作为下一个值。
最后,再次查询items
表中的数据,如下结果。
请注意,由于自MySQL 5.1版本起,
AUTO_INCREMENT
列只接受正值。AUTO_INCREMENT
列不支持负数值。
MySQL提供了一个扩展,允许您指定显示宽度以及INT
数据类型。显示宽度包含在INT
关键字后面的括号内,例如,INT(5)
指定一个显示宽度为五位数的INT
。
要注意的是,显示宽度属性不能控制列可以存储的值范围。显示宽度属性通常由应用程序用于格式化整数值。 MySQL将显示宽度属性作为返回结果集的元数据。
除了显示宽度之外,MySQL还提供了非标准的ZEROFILL
属性。 在这种情况下,MySQL将空格替换为零。请参考以下示例。
首先,使用以下语句创建一个名为zerofill_tests
的表:
其次,在zerofill_tests
表中插入一个新行。
第三,从zerofill_tests
表查询数据。
v1
列的显示宽度为2
,包括ZEROFILL
,它的值为1
,因此在输出中看到01
。 MySQL将第一个空格替换为0
。
v2
列具有包含ZEROFILL
的显示宽度3
。 它的值为6
,因此将看到有00
作为前导零。
v3
列具有包含ZEROFILL
的显示宽度5
,它的值为9
,因此MySQL在输出数字的开头填零为0000
。
请注意,如果对整数列使用
ZEROFILL
属性,MySQL将自动将一个UNSIGNED
属性添加到该列。
在本教程中,我们向您展示了如何在表中使用MySQL INT
数据类型,并向您介绍了整数列的显示宽度和ZEROFILL
属性。