MySQL 整型 长度 ZEROFILL属性

在MySQL中创建整型字段INT(或其它像TINYINT)时,可以设定该字段的长度,如:

 

CREATE TABLE t1(id1 INT,id2 INT(5));

 

查看表结构信息:

mysql> DESC t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id1   | int(11) | YES  |     | NULL    |       |
| id2   | int(5)  | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

 

如果不指定长度,INT型默认长度为11。如果往该字段插入长度大于设定长度的数据,结果会怎样?MySQL会不会截断或者插不进去呢?

 

现往该表插入长度为7个1的值:

mysql> INSERT INTO t1(id1,id2) VALUES(1111111,1111111);
查看结果如下:

mysql> SELECT * FROM t1;
+---------+---------+
| id1     | id2     |
+---------+---------+
|       1 |       1 |
| 1111111 | 1111111 |
+---------+---------+
2 rows in set (0.00 sec)

 

得出结论,MySQL插入成功,不会截断,还是按照类型的实际精度进行保存

 

整型字段有个ZEROFILL属性,在数字长度不够的数据前面填充0,以达到设定的长度,下面给上面的两个字段id1和id2分别设置该属性:

 ALTER TABLE t1 MODIFY id1 INT ZEROFILL;

 ALTER TABLE t1 MODIFY id2 INT(5) ZEROFILL;

 

 

mysql> DESC t1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| id1   | int(10) unsigned zerofill | YES  |     | NULL    |       |
| id2   | int(5) unsigned zerofill  | YES  |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+

 

再往t1表插入两个长度为1的数据,如下:

mysql> INSERT INTO t1(id1,id2) VALUES(1,1);

 

查看结果如下:

mysql> SELECT * FROM t1;
+------------+---------+
| id1        | id2     |
+------------+---------+
| 0000000001 |   00001 |
| 0001111111 | 1111111 |
+------------+---------+

 

 加上ZEROFILL属性后,MySQL会在数据前面补0以达到设置的长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值