mysql> create table t1(a tinyint(30),b tinyint(3) zerofill);#建表指定zerofill,默认加上unsigned(正整数)
Query OK, 0 rows affected (0.04 sec)
mysql> desc t1;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| a | tinyint(30) | YES | | NULL | |
| b | tinyint(3) unsigned zerofill | YES | | NULL | |
+-------+------------------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
#下列测试表明,如果插入的列值超出列的取值范围,系统会插入对应列的的边界值
,比如:
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。
mysql> desc t1;
+-------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------------------+------+-----+---------+-------+
| a | tinyint(30) | YES | | NULL | |
| b | tinyint(5) | YES | | NULL | |
| c | smallint(6) unsigned | YES | | NULL | |
+-------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> insert into t1 values(6,-23768,567);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from t1;
+------+------+-------+
| a | b | c |
+------+------+-------+
| 1 | 0 | 0 |
| 8 | 9 | 100 |
| 8 | 9 | 65535 |
| 8 | 9 | 0 |
| 6 | -128 | 567 |
+------+------+-------+
5 rows in set (0.00 sec)