Wenn wir eine Argumentlänge mit numerischen Datentypen verwenden, gibt dies meines Wissens die Anzeigebreite an.
Ich habe folgendes versucht:
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)
Erstens ist tinyint ein 1-Byte-Wert. Also, was ist die Bedeutung von tinyint(4)
? Es können keine 4 Ziffern eingegeben werden.
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)
Ich sehe, dass ich in tinyint eine 10 und eine 101 gespeichert habe und diese Werte zurückbekommen konnte, obwohl sie als tinyint (1) definiert sind.
Sollte ich nicht eine 1 für sehen var1
? Dh nur 1 Anzeigestellen?