Answers:
表示显示宽度
无论您使用tinyint(1)还是tinyint(2),它都没有任何区别。
我总是使用tinyint(1)和int(11),我使用了几个mysql客户端(navicat,sequel pro)。
一点也不意味着!我进行了测试,所有上述客户端甚至命令行客户端似乎都忽略了这一点。
但是,如果使用选项,则显示宽度最重要ZEROFILL,例如,表具有以下两列:
甲 TINYINT(2)ZEROFILL
B tinyint(4)零填充
两列具有1的值,对于列输出阿将是01和0001用于乙,如在下面的截图:)
的(m)指示列显示宽度; 显示查询结果时,MySQL客户端等应用程序会利用此功能。
例如:
| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |
在这里a,b和c使用TINYINT(1),TINYINT(2)并TINYINT(3)分别。如您所见,它使用显示宽度在左侧填充值。
重要的是要注意,它不会影响该特定类型的可接受的值范围,即TINYINT(1)仍会接受[-128 .. 127]。
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)
              关于INT,TINYINT ...这些是不同的数据类型,INT是4字节数字,TINYINT是1字节数字。此处的更多信息-INTEGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT。
TINYINT数据类型的语法为TINYINT(M),其中M表示最大显示宽度(仅在MySQL客户端支持时使用)。