建站工具推荐,苏州学习网站建设,网站做支付需要准备什么条件,短视频代运营方案策划书有个表的要加个user_id字段#xff0c;user_id字段可能很大#xff0c; alter table xxx ADD user_id int(1)。 int(1)怕是不够用吧#xff0c;接下来是一通解释。 我们知道在mysql中 int占4个字节#xff0c;那么对于无符号的int#xff0c;最大值是2^32-1 4294967295user_id字段可能很大 alter table xxx ADD user_id int(1)。 int(1)怕是不够用吧接下来是一通解释。 我们知道在mysql中 int占4个字节那么对于无符号的int最大值是2^32-1 4294967295将近40亿难道用了int(1)就不能达到这个最大值吗 CREATE TABLE user (id int(1) unsigned NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4;id字段为无符号的int(1)我来插入一个最大值看看。 mysql INSERT INTO user (id) VALUES (4294967295);
Query OK, 1 row affected (0.00 sec)可以看到成功了说明int后面的数字不影响int本身支持的大小int(1)、int(2)…int(10)没什么区别。 零填充 一般int后面的数字配合zerofill一起使用才有效。先看个例子 CREATE TABLE user (id int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4;
// An highlighted block
var foo bar;注意int(4)后面加了个zerofill我们先来插入4条数据。 mysql INSERT INTO user (id) VALUES (1),(10),(100),(1000);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0分别插入1、10、100、1000 4条数据然后我们来查询下 mysql select * from user;
------
| id |
------
| 0001 |
| 0010 |
| 0100 |
| 1000 |
------
4 rows in set (0.00 sec)通过数据可以发现 int(4) zerofill实现了不足4位补0的现象单单int(4)是没有用的。而且对于0001这种底层存储的还是1只是在展示的会补0。 int后面的数字不能表示字段的长度int(num)一般加上zerofill才有效果。 zerofill的作用一般可以用在一些编号相关的数字中比如学生的编号 001 002 … 999这种如果mysql没有零填充的功能但是你又要格式化输出等长的数字编号时那么你只能自己处理了。