无符号的最大值就是二进制最大位数锁代表的数值
类型 | 有符号 | 无符号 | 存储大小 |
---|
int | -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) | 0到4294967295 (2^32) | 4字节(也就是32位) |
bigint | -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) | 0到18446744073709551615 (2^64) | 8字节 |
mediumint | -2^23 (-8388608) 到 2^23-1 (8388607) | 0到16777215 (2^24) | 3字节 |
smallint | -2^15 (-32,768) 到 2^15 – 1 (32,767) | 0到65535 (2^16) | 2字节 |
tinyint | -128 到 127 | 0到255 (2^8) | 1字节 |
int(10),括号里的这个10 所代表的含义:10是一个显示宽度,和当前int大小没有任何关系,这个10是没有任何操作的,除非int的属性选择为UNSIGNED ZEROFILL
,即填充0
,此时也不可能有负数,当位数(长度)不够括号里的数值的时候,会自动补0,超过没有操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| CREATE TABLE zerofill_demo(
id INT(11)NOT NULL AUTO_INCREMENT,
a INT(11)NOT NULL,
b INT(11)UNSIGNED ZEROFILL NOT NULL,
c INT(5)DEFAULT NULL,
d INT(5)UNSIGNED ZEROFILL NOT NULL,
e INT(15)DEFAULT NULL,
PRIMARY KEY(`id`)
)
# 插入数据
INSERT INTO zerofill_demo(a,b,c,d,e)VALUES(1,1,1,1,1);
INSERT INTO zerofill_demo(a,b,c,d,e)VALUES(1234567890,1234567890,1234567890,1234567890,1234567890);
# 最终结果
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +
| id | a | b | c | d | e |
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +
| 1 | 1 | 00000000001 | 1 | 00001 | 1 |
| 2 | 1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 |
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +
|