int0 和 int1区别
前言
- 最近我和一个同事共同完成一个功能,我们对原表新增了订单ID字段,我使用了下面的 SQL 语句:
alter table xxx ADD order_id int(1)
,然后同事对我说,int(1) 这么小怎么够用?然后我一通解释说服了队友,他连说“原来如此”,成功装逼。
- 其实我不是第一次遇到有朋友问这个问题,今天我们就一起来看看 int(1)、int(20) 到底有什么区别?
数据准备
- 创建测试表 test_table,包含两个测试字段
area
int(1)、area_1
int(20):
int(1)、int(20) 存储大小有区别?
- 我们知道在 MySQL 中 int 类型占4个字节,对于无符号整形最大值为:2^32-1 = 4294967295,下面我们看看int(1)、int(20)可以存储 int 类型最大值?
- 可以看到,int(1)、int(20) 都可以存储 int 类型最大值,说明对存储大小无影响。那么我们的1和20用什么作用呢?答案就是对齐填充,当联合零填充(zerofill) 使用时,我们配置的值才会体现效果。
零填充(zerofill)
- 所谓零填充就是当我们数字位小于我们指定位数时,使用0填充补全位数,比如指定位数为4位,数为23,那么实际会被填充为 0023。
- 下面来看一下实际例子:将 area 和 area_1 字段配置为 zerofill。
- 展示效果:
- 我们可以看到 area_1 不足20位时使用0补齐到20位,area 指定位数为 1 位实际并没有效果,因为数字至少为1位,对 NULL 不生效。
- 零填充(zerofill)在一些需要数字对齐的场景中可能使用,但实践中并不推荐,对数据库依赖性太强。
作者:Lorin洛林链接:https://juejin.cn/post/7307085892385161254来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Loading...