MySql: Tinyint(2) vs tinyint (1) - Quelle est la différence?

j'ai connu boolean dans mysql comme tinyint (1) .

Aujourd'hui , je vois une table avec défini un entier comme tinyint(2) , et aussi d'autres comme int(4) , int(6) ...

que signifie la taille dans le champ de type entier et tinyint ?

136
demandé sur phoops 2012-10-11 16:49:16

4 réponses

signifie largeur d'affichage

"

que vous utilisiez tinyint(1) ou tinyint(2), cela ne fait aucune différence.

j'utilise toujours tinyint(1) et int(11), j'ai utilisé plusieurs clients mysql (navicat, sequel pro).

ça ne veut rien dire du tout! J'ai fait un test, au-dessus des clients ou même le client en ligne de commande semble l'ignorer.

mais, largeur d'affichage est le plus important si vous utilisez l'option ZEROFILL , par exemple votre tableau a les 2 colonnes suivantes:

Un tinyint(2) zerofill ne

B tinyint (4) zerofill

les deux colonnes ont la valeur de 1, la sortie pour la colonne A serait 01 et 0001 pour B , comme vu dans screenshot ci-dessous:)

zerofill with displaywidth

31
répondu AamirR 2016-12-02 18:39:51

le (m) indique la largeur d'affichage de la colonne; des applications telles que le client MySQL l'utilisent pour afficher les résultats de la requête.

par exemple:

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

ici a , b et c utilisent respectivement TINYINT(1) , TINYINT(2) et TINYINT(3) . Comme vous pouvez le voir, il rembourre les valeurs sur le côté gauche en utilisant la largeur d'affichage.

il est important de noter que il n'affecte pas la plage de valeurs acceptée pour ce type particulier, c'est-à-dire TINYINT(1) accepte toujours [-128 .. 127] .

196
répondu Ja͢ck 2014-09-03 09:22:30
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)
18
répondu zloctb 2014-04-17 07:09:19

à propos de L'INT, TINYINT... Il s'agit de différents types de données, INT est un nombre de 4 octets, TINYINT est un nombre de 1 octet. Plus d'informations ici - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .

la syntaxe du type de données TINYINT est TINYINT(M), où M indique la largeur d'affichage maximale (utilisée seulement si votre client MySQL le supporte).

Attributs De Type Numérique .

13
répondu Devart 2013-12-18 06:06:27