Lorsque nous utilisons une longueur d'argument avec des types de données numériques, autant que je sache, cela spécifie la largeur d'affichage.
J'ai essayé ce qui suit:
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)
Tout d'abord, tinyint est une valeur de 1 octet. Alors quel est le sens de tinyint(4)
? Il ne peut pas y avoir 4 chiffres.
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)
Je vois que dans tinyint j'ai stocké un 10 et 101 et je pourrais récupérer ces valeurs malgré le fait qu'il soit défini comme tinyint (1).
Ne devrais-je pas voir un 1 pour var1
? Ie seulement 1 chiffres d'affichage?