开发过程当中,新来的小朋友问到: MySQL见表过程当中,字段类型为int的长度是什么意思?最大值是 999999999 吗?html
虽然知道 int(1) 这个并不表示只能表示 0-9 等,可是替换到 int(11) 的时候思惟有时候会缓不过来,直到有一次需求要求 指定字符长度 的时候才恍然大悟, int(6) 就是 000001 ~ 099999 等等,可是依旧能够表示 12345678 等数字mysql
Mysql 建表过程当中:sql
MySQL中int类型占用4个字节[byte(B)],1B有8个位[bit(b)],一个位(b)就表明一个0或者1,那么MySQL中int占用4B,对应位就是 4*8b = 32b 了,也就是说 int 表示的数字 个数 是: 2的32次方。htm
由于字节分有符号和无符号两种,因而 int 有符号 的 范围就是 -2的31次方 到 2的31次方减去1 [?1 为何不是32次方?] [?2 为何要减去1?],即 -2147483648 ~ 2147483647; int 无符号(unsigned) 的 范围就是 0 到 2的32次方减去1。开发
知道了 int 类型的范围后,咱们再来看看长度是什么意思。 在MySQL手册中,字段类型的长度用 “M” 表示,表示最大显示宽度。 int 的 最大有效显示宽度是 255。 注意: 此处表示 显示宽度 和 存储大小或类型及范围 无关get
类型 | 占用字节数 | 有符号取值范围 | 无符号取值范围 |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -2^63 ~ 2^63-1 | 0 ~ 2^64-1 |