Mysql
 sql >> Database >  >> RDS >> Mysql

tinyint(dimensione), varchar(dimensione):spiegazione della dimensione

La tua soluzione alla confusione è-

In Mysql , int(6) non significa che possono memorizzare fino a 6 cifre. non più di 999999.

Tuttavia CHAR(6)Questo significa una colonna di caratteri, con una lunghezza massima di 6 caratteri, come queste parole:

case

Se provassi a memorizzare la parola "special" in quella colonna, MySQL taglierebbe il valore in "specia", poiché la parola originale ha 7 caratteri.

In ogni caso, le colonne intere hanno tutte un intervallo preimpostato di valori consentiti. Il numero tra parentesi indica solo la larghezza di visualizzazione.

Probabilmente questo è ancora confuso, quindi lascia che ti spieghi ulteriormente...

La larghezza di visualizzazione è un numero compreso tra 1 e 255. È possibile impostare la larghezza di visualizzazione se si desidera che tutti i valori interi "appaiano" in modo simile:

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

M indica la larghezza massima di visualizzazione per i tipi interi. La larghezza di visualizzazione massima è 255. La larghezza di visualizzazione non è correlata all'intervallo di valori che un tipo può contenere, . Per i tipi a virgola mobile ea virgola fissa, M è il numero totale di cifre che possono essere memorizzate.

Se specifichi ZEROFILL per una colonna numerica, MySQL aggiunge automaticamente l'attributo UNSIGNED alla colonna.

Quindi la risposta alla tua domanda è

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 |
+------+------+-----------------+

*Quindi capisci, in Mysql la larghezza di visualizzazione funziona solo con riempimento zero.

*se usi non usi zerofill, non è efficace.

E se usi zerofill, mysql controllerà display widht e, se non lo assegni, mysql assegnerà automaticamente display-width a quella colonna. *