零填充会自动使用无符号位;零填充指的是位数固定,如果数值长度不足字段类型的长度,则使用0来填充
方式一:
zerofill: 当插入的数值比定义的属性长度小的时候,会在数值前面进行补值操作。
创建表
create table table_name (
id bigint(20) NULL,
order_no int(6) unsigned zerofill NULL
);
填充0,那么就是无符号的。
插入数据
INSERT INTO table_name VALUES(2,5);
查数据
SELECT * FROM table_name
方法二:
利用工具,如Navicat
需要注意的是,用Navicat设置填充零时,其不显示填充的0;可以通过命令行的方式进行查看,从而确定是否真的填充了0。
创建表
mysql> CREATE TABLE IF NOT EXISTS testNUM(
-> -- 默认为有符号
-> num1 TINYINT,
-> num2 TINYINT UNSIGNED,
-> num3 INT,
-> num4 INT ZEROFILL,
-> num5 INT UNSIGNED ZEROFILL
-> );
Query OK, 0 rows affected (0.08 sec)
插入数据
mysql> INSERT testNUM(num1,num2) VALUES(-5,-5);
ERROR 1264 (22003): Out of range value for column 'num2' at row 1
mysql> INSERT testNUM(num3,num4) VALUES(123,123);
mysql> INSERT testNUM VALUES(0,0,0,0,0);
mysql> INSERT testNUM(num3,num4,num5) VALUES(123,123,123);
查询
mysql> SELECT * FROM testNUM;
+------+------+------+------------+------------+
| num1 | num2 | num3 | num4 | num5 |
+------+------+------+------------+------------+
| NULL | NULL | 123 | 0000000123 | NULL |
| 0 | 0 | 0 | 0000000000 | 0000000000 |
| NULL | NULL | 123 | 0000000123 | 0000000123 |
+------+------+------+------------+------------+