Mysql中int和bigint以及smallint和tinyint的区别

无符号的最大值就是二进制最大位数锁代表的数值

类型有符号无符号存储大小
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 到 1270到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 |
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +