229 votes

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

Je savais que le booléen dans mysql comme tinyint (1) .

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

Que signifie la taille dans les champs de type integer et tinyint ?

257voto

Jack Points 88446

El (m) indique la largeur d'affichage de la colonne ; les 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 |

Aquí a , b y c utilisent TINYINT(1) , TINYINT(2) y TINYINT(3) respectivement. Comme vous pouvez le constater, les valeurs de la partie gauche sont décalées en fonction de la largeur d'affichage.

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

141voto

R-Aamir Points 3525

Cela 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).

Cela ne signifie rien du tout ! J'ai fait un test, tous les clients ci-dessus ou même le client en ligne de commande semblent ignorer cela.

Mais, largeur d'affichage est très important si vous utilisez ZEROFILL Par exemple, votre tableau comporte les deux colonnes suivantes :

A tinyint(2) zerofill

B tinyint(4) zerofill

les deux colonnes ont la valeur 1, la sortie pour la colonne A serait 01 y 0001 para B comme on le voit dans la capture d'écran ci-dessous :)

zerofill with displaywidth

19voto

zloctb Points 531
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)

17voto

Devart Points 52715

À propos des INT, TINYINT... Ce sont des types de données différents, 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 maximale de l'affichage (utilisé uniquement si votre client MySQL le supporte).

Attributs du type numérique .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X