MySQL 总共提供了 5 种整数类型。下表总结了它们:
类型 |
存储(字节) |
有符号最小值 |
最小值无符号 |
最大值有符号 |
最大值无符号 |
---|---|---|---|---|---|
|
1 |
-128 |
0 |
127 |
255 |
|
2 |
-32768 |
0 |
32767 |
65535 |
|
3 |
-8388608 |
0 |
8388607 |
16777215 |
|
4 |
-2147483648 |
0 |
2147483647 |
4294967295 |
|
8 |
- |
0 |
- 1 |
- 1 |
有关签名和未签名的说明,请参阅此处。
指定长度
请注意,我们还可以使用符号 INT(M)
指定要显示的位数,其中 M
是要显示的长度。
注意
仅当您同时使用 ZEROFILL
选项时才应设置长度。否则,指定长度是没有意义的。
-
INT(4) ZEROFILL
与42
的存储值将显示0042
-
INT(4)
与42
的存储值将显示42
-
INT
与32
的存储值将显示32
请注意,无论您指定什么长度,存储空间仍然保持不变。
例子
考虑下表有关一些学生的信息:
student_id |
名称 |
名字 |
day_enrolled |
年龄 |
用户名 |
---|---|---|---|---|---|
1 |
Sky |
Towner |
2015-12-03 |
17 |
stowner1 |
2 |
Ben |
Davis |
2016-04-20 |
19 |
bdavis2 |
3 |
Travis |
Apple |
2018-08-14 |
18 |
tapple3 |
4 |
Arthur |
David |
2016-04-01 |
16 |
adavid4 |
5 |
Benjamin |
Town |
2014-01-01 |
17 |
btown5 |
可以使用此处的代码创建上述示例表。
要将 age
列的长度指定为 INT(5)
和 ZEROFILL
:
ALTER TABLE students MODIFY age INT(5) ZEROFILL;
Query OK, 5 rows affected, 2 warnings (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 2
要检查列的长度是否已更新:
DESCRIBE students;
+--------------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------------------+------+-----+---------+----------------+
| student_id | int unsigned | NO | PRI | NULL | auto_increment |
| fname | varchar(30) | YES | | NULL | |
| lname | varchar(30) | YES | | NULL | |
| day_enrolled | date | YES | | NULL | |
| age | int(5) unsigned zerofill | YES | | NULL | |
| username | varchar(15) | YES | | NULL | |
+--------------+--------------------------+------+-----+---------+----------------+
现在检查age
在students
表中的显示方式:
SELECT * FROM students;
+------------+----------+--------+--------------+-------+----------+
| student_id | fname | lname | day_enrolled | age | username |
+------------+----------+--------+--------------+-------+----------+
| 1 | Sky | Towner | 2015-12-03 | 00017 | stowner1 |
| 2 | Ben | Davis | 2016-04-20 | 00019 | bdavis2 |
| 3 | Travis | Apple | 2018-08-14 | 00018 | tapple3 |
| 4 | Arthur | David | 2016-04-01 | 00016 | adavid4 |
| 5 | Benjamin | Town | 2014-01-01 | 00017 | btown5 |
+------------+----------+--------+--------------+-------+----------+
请注意,age
值现在用 0 到 5 位数字向左填充。
相关用法
- MySQL TIME_FORMAT方法用法及代码示例
- MySQL TIMEDIFF方法用法及代码示例
- MySQL TIME方法用法及代码示例
- MySQL TIMESTAMPDIFF()用法及代码示例
- MySQL TIMESTAMP方法用法及代码示例
- MySQL TIME_TO_SEC方法用法及代码示例
- MySQL TIME用法及代码示例
- MySQL TIMESTAMPDIFF方法用法及代码示例
- MySQL TIME()用法及代码示例
- MySQL TIMESTAMPADD方法用法及代码示例
- MySQL TO_DAYS方法用法及代码示例
- MySQL TRUNCATE方法用法及代码示例
- MySQL TAN方法用法及代码示例
- MySQL TRIM()用法及代码示例
- MySQL TAN()用法及代码示例
- MySQL TO_BASE64方法用法及代码示例
- MySQL TO_SECONDS方法用法及代码示例
- MySQL Trim()用法及代码示例
- MySQL TRUNCATE用法及代码示例
- MySQL TRUNCATE()用法及代码示例
- MySQL TRIM方法用法及代码示例
- MySQL ROUND()用法及代码示例
- MySQL REPEAT()用法及代码示例
- MySQL POWER()用法及代码示例
- MySQL LEAD() and LAG()用法及代码示例
注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 MySQL | TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。