MySQL INT 类型
简介:在本教程中,您将了解MySQL INT或整数数据类型以及如何在数据库表设计中使用它。此外,我们将向您展示如何使用表中整数列的显示宽度和ZEROFILL属性。
MySQL INT类型简介
在MySQL中,INT
代表整数的整数。可以在没有分数分量的情况下写入整数,例如,它是1,100,4,-10等,并且它不能是1.2,5 / 3等。整数可以是零,正和负。
MySQL支持所有标准SQL整数类型INTEGER
或INT
和SMALLINT
。另外,MySQL提供 了标准SQL TINYINT
MEDIUMINT
,并BIGINT
作为标准SQL的扩展。
MySQL INT 数据类型可以是有符号和无符号的。下表说明了每种整数类型的特征,包括以字节为单位的存储,最小值和最大值。
类型 | 存储(字节) | 有符号 | 无符号 | ||
---|---|---|---|---|---|
最小值 | 最大值 | 最小值 | 最大值 | ||
TINYINT | 1 | -128(-24) | 127(24) | 0 | 255(28) |
SMALLINT | 2 | -32768(-28) | 32767(-28) | 0 | 65535(-216) |
MEDIUMINT | 3 | -8388608(-212) | 8388607(-212) | 0 | 16777215(-224) |
INT | 4 | -2147483648(-216) | 2147483647(-216) | 0 | 4294967295(-232) |
BIGINT | 8 | -9223372036854775808(-232) | 9223372036854775807(-232) | 0 | 18446744073709551615(-264) |
在列中使用INT
因为整数类型表示确切的数字,所以通常将它用作表的主键。此外,INT
列可以具有 AUTO_INCREMENT
属性。
当你 插入一个NULL
值或0到INT AUTO_INCREMENT
列,列的值设置为下一个序列值。请注意,序列值以1开头。
当您向AUTO_INCREMENT
列中插入一个非零或零值时,列将接受NULL
值。此外,序列被重置为插入值的下一个值。
让我们看一个使用带AUTO_INCREMENT
属性的整数列的表的示例 。
首先,使用以下语句创建一个新表items
以整数列作为主键:
CREATE TABLE items ( item_id INT AUTO_INCREMENT PRIMARY KEY, item_text VARCHAR(255) );您可以在CREATE TABLE上使用
INT
或INTEGER
,因为它们相等的。无论何时向items
表中插入新行,item_id
列的值都会增加1。
接下来,以下INSERT语句在items
表中插入三行。
INSERT INTO items(item_text) VALUES('laptop'), ('mouse'),('headphone');然后,使用以下SELECT语句从
items
表中查询数据:
SELECT * FROM items;
+---------+-----------+ | item_id | item_text | +---------+-----------+ | 1 | laptop | | 2 | mouse | | 3 | headphone | +---------+-----------+ 3 rows in set (0.00 sec)之后,插入一个新行,
明确指定item_id
的值。
INSERT INTO items(item_id,item_text) VALUES(10,'Server');由于
item_id
列的当前值为 10,序列将重置为11.如果插入新行,则AUTO_INCREMENT
列将使用11作为下一个值。
INSERT INTO items(item_text) VALUES('Router');最后,再次查询
items
表的数据以查看结果。
SELECT * FROM items;
+---------+-----------+ | item_id | item_text | +---------+-----------+ | 1 | laptop | | 2 | mouse | | 3 | headphone | | 10 | Server | | 11 | Router | +---------+-----------+ 5 rows in set (0.00 sec)
注意:自MySQL 5.1以来,AUTO_INCREMENT
列仅接受正值。AUTO_INCREMENT
列不支持负值 。
MySQL INT和显示宽度属性
MySQL提供了一个扩展,允许您指定显示宽度和INT
数据类型。显示宽度包含在INT
关键字后面的括号内,例如,INT(5)
指定INT
显示宽度为五位的a。
请务必注意,display width属性不控制列可以存储的值范围。应用程序通常使用display width属性来格式化整数值。MySQL包含display width属性作为返回结果集的元数据。
MySQL INT具有ZEROFILL属性
除了显示宽度,MySQL还提供了非标准ZEROFILL
属性。在这种情况下,MySQL将空格替换为零。请考虑以下示例。
首先,zerofill_tests
使用以下语句创建一个名为的表:
CREATE TABLE zerofill_tests( id INT AUTO_INCREMENT PRIMARY KEY, v1 INT(2) ZEROFILL, v2 INT(3) ZEROFILL, v3 INT(5) ZEROFILL );其次,在
zerofill_tests
表中插入一个新行。
INSERT into zerofill_tests(v1,v2,v3) VALUES(1,6,9);第三,从
zerofill_tests
表中查询数据。
SELECT v1, v2, v3 FROM zerofill_tests;
+------+------+-------+ | v1 | v2 | v3 | +------+------+-------+ | 01 | 006 | 00009 | +------+------+-------+ 1 row in set (0.01 sec)v1列的显示宽度为2的
ZEROFILL.
因此它的值为1,因此,您可以在输出中看到01
。MySQL将第一个空格替换为0。
v2列的显示宽度为3的 ZEROFILL
。因此,它的值为6,其它值以00
填充。
v3列的显示宽度为5 的ZEROFILL
,而其值为9,因此MySQL 在输出中的0000
数字的开头填充。
注意:如果ZEROFILL
对整数列使用属性,MySQL将自动向列添加 UNSIGNED
属性。
ZEROFILL
了整数列的显示宽度和属性。