Mysql 数据库表中 int 类型的长度

Mysql 我们平时创建一个表对 int 类型习惯设置 int(11) ,不知道你有没有试过设置其他长度有什么影响吗?

下面咱们来实验一下啦。

以下是每个整数类型的存储和范围:

类型

字节

最小值

最大值

(带符号的/无符号的)

(带符号的/无符号的)

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

-9223372036854775808

9223372036854775807

0

18446744073709551615

第二列是字节,我们学过一个字节 byte 是 8 个位 bit,字节不是计算机存储的最小单位,位才是,一个位代表一个 0 或者 1 ,8 个位 bit 组成一个字节,一般一个字节用 B 来表示 byte ,用小写 b 来表示 bit 。

计算机存储单位的换算:

1B=8b

1KB=1024B

1MB=1024KB

根据 int 类型允许存储的字节数是 4 个字节, 我们就能换算出 int 类型 UNSIGNED (无符号)类型的能存储的最小值为 0 , 最大值为 4294967295 (即 4B=32b, 最大值即为 32 个 1 组成);

二我们建表时设置的长度 int(11) 或者设置成 int(3)或 int(6),

CREATE TABLE `test` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `i1` int(3) unsigned zerofill DEFAULT NULL,
    `i2` int(6) unsigned zerofill DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

 

其实都是可以存储 4 个字节的无符号整数的。当有设置 zerofill 时,数字不足3位或6位时,前面会用 0 补齐

Mysql 还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(比如INT(6))。

该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。

显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。


也就是说,int 的长度并不影响数据的存储精度,长度只和显示有关,为了让大家看的更清楚,我们在上面例子的建表语句中,使用了 zerofill。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值