据我所知,当我们使用带有数字数据类型的参数长度时,它指定了显示宽度。
我尝试了以下方法:
mysql> create table boolean_test (var1 boolean, var2 tinyint);
Query OK, 0 rows affected (0.10 sec)
mysql> show create table boolean_test;
+--------------+-------------------------
| Table | Create Table
+--------------+-------------------------
| boolean_test | CREATE TABLE `boolean_test` (
`var1` tinyint(1) DEFAULT NULL,
`var2` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------------+---------------------------
1 row in set (0.00 sec)
首先,tinyint是一个1字节的值。那是什么意思tinyint(4)
呢?不能为4位数字。
mysql> insert into boolean_test values(101,112);
Query OK, 1 row affected (0.03 sec)
mysql> select * from boolean_test;
+------+------+
| var1 | var2 |
+------+------+
| 10 | 112 |
| 101 | 112 |
+------+------+
2 rows in set (0.00 sec)
我看到在tinyint中我存储了10和101,尽管将其定义为tinyint(1),但我可以取回这些值。
我不应该看到1 var1
吗?即只有1个显示数字?
为什么一次插入后有两行?我无法完全理解此代码。
—
WoodrowShigeru