Mysql
 sql >> Base de données >  >> RDS >> Mysql

tinyint(taille), varchar(taille) :explication de la taille

Votre solution à la confusion est-

Dans Mysql , int(6) ne signifie pas qu'ils peuvent stocker jusqu'à 6 chiffres. pas plus de 999999.

Cependant CHAR(6)Cela signifie une colonne de caractères, d'une longueur maximale de 6 caractères, comme ces mots :

maisons

Si j'essayais de stocker le mot "spécial" dans cette colonne, MySQL hacherait la valeur en "spécia", puisque le mot d'origine a 7 caractères.

Quoi qu'il en soit, les colonnes entières ont toutes une plage prédéfinie de valeurs autorisées. Le nombre entre parenthèses indique uniquement la largeur d'affichage.

C'est probablement encore déroutant, alors laissez-moi vous expliquer davantage…

La largeur d'affichage est un nombre compris entre 1 et 255. Vous pouvez définir la largeur d'affichage si vous souhaitez que toutes vos valeurs entières "apparaissent" de la même manière :

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

M indique la largeur d'affichage maximale pour les types entiers. La largeur d'affichage maximale est de 255. La largeur d'affichage n'est pas liée à la plage de valeurs qu'un type peut contenir, . Pour les types à virgule flottante et à virgule fixe, M est le nombre total de chiffres pouvant être stockés.

Si vous spécifiez ZEROFILL pour une colonne numérique, MySQL ajoute automatiquement l'attribut UNSIGNED à la colonne.

Donc, la réponse à votre question est

create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
)engine=innodb;

insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;

OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
|   01 | 0002 |               3 |
|   11 | 0012 |              14 |
|  123 | 0123 |             127 |
|  255 | 0255 |             127 |
+------+------+-----------------+

* Alors, comprenez, dans Mysql, la largeur d'affichage ne fonctionne qu'avec zerofill.

*si vous utilisez n'utilisez pas zerofill, ce n'est pas efficace.

Et si vous utilisez zerofill, mysql vérifiera display widht , et si vous ne l'attribuez pas, mysql attribuera automatiquement display-width à cette colonne. *