mysql int 11 java_mysql中int(11)列的大小(以字节为单位)是多少?

正如其他人所说,列可以存储的最小/最大值以及以字节为单位的存储量仅由类型而不是长度定义 .

很多这些答案都说 (11) 部分仅影响显示宽度,这不完全正确,但主要是 .

int(2) 与 no zerofill specified 的定义将:

仍然接受 100 的值

输出时

仍为 100 100 的值(不是 0 或 00 )

display width 将是从select查询输出的最大值的宽度 .

(2) 唯一能做的就是 if zerofill is also specified :

1 的值将显示 01 .

显示值时,该列将始终具有 width of the maximum possible value the column could take (整数的10位数),而不是显示该列需要在该特定选择查询中显示的最大值所需的最小宽度,这可能要小得多 .

该列仍然可以使用,并显示超过长度的值,但这些值不会以0为前缀 .

查看所有细微差别的最佳方法是运行:

CREATE TABLE `mytable` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`int1` int(10) NOT NULL,

`int2` int(3) NOT NULL,

`zerofill1` int(10) ZEROFILL NOT NULL,

`zerofill2` int(3) ZEROFILL NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `mytable`

(`int1`, `int2`, `zerofill1`, `zerofill2`)

VALUES

(10000, 10000, 10000, 10000),

(100, 100, 100, 100);

select * from mytable;

这将输出:

+----+-------+-------+------------+-----------+

| id | int1 | int2 | zerofill1 | zerofill2 |

+----+-------+-------+------------+-----------+

| 1 | 10000 | 10000 | 0000010000 | 10000 |

| 2 | 100 | 100 | 0000000100 | 100 |

+----+-------+-------+------------+-----------+

请注意 int1 列的显示宽度比 zerofill2 小得多,即使长度较大 .

这个答案是针对Linux的MySQL 5.7.12进行测试的,对于其他实现可能会有所不同 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值