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 INT11NOT NULL AUTO_INCREMENT
    a INT11NOT NULL
	b INT11UNSIGNED ZEROFILL NOT NULL
	c INT5DEFAULT NULL
	d INT5UNSIGNED ZEROFILL NOT NULL
	e INT15DEFAULT NULL
	PRIMARY KEY`id`

# 插入数据
INSERT INTO zerofill_demoabcdeVALUES1,1,1,1,1;
INSERT INTO zerofill_demoabcdeVALUES12345678901234567890123456789012345678901234567890;
# 最终结果
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +
| id | a | b | c | d | e |
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +
| 1 | 1 | 00000000001 | 1 | 00001 | 1 |
| 2 | 1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 |
+ ---- + ------------ + ------------- + ------------ + ---- -------- + ------------ +