Differenza tra int smallint etc.

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Come da titolo qualcuno può spiegarmi papale papale la differenza tra usare ad esempio int(2) con Smallint(2) o mediumint(2) etc.?

ho letto un pò in giro ma non riesco bene a focalizzare la differenza o per meglio dire l'utilità di usare uno di questi.

thank
 
Non capisco se la richiesta di informazioni si riferisce al tipo di campo o all'attributo numerico tra parentesi dopo il tipo di campo.
In ogni caso, le tipologie di campo dipendono dalla dimensione dei valori che si intende gestire:

http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

L'indicazione dell'attributo sui numerici, invece, non modifica il tipo di campo ma influisce sulla visualizzazione del valore, indicandone il numero minimo di caratteri in output.
Ad esempio, se abbiamo un campo INT(4), ma il valore inserito è "2", questo verrà visualizzato come " 2" per occupare 4 posizioni, con il carattere di riempimento " " (spazio) a sinistra del valore.
Aggiungendo l'opzione ZEROFILL, si avrà lo stesso allineamento del numero a destra, ma con carattere di riempimento "0" => "0002".

http://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html

L'utilizzo dell'attributo può essere utile in caso di gestione dati a spaziatura fissa!

:byebye:
 
mediumint, a differenza degli altri due, può essere utilizzato solo in mysql.
Le differenze sostanziali sono:

smallint: 2 bytes, -32,768 to +32,767 / 0 to 65,535
mediumint: 3 bytes, -8,388,608 to 8,388,607 / 0 to 16,777,215
int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647 / 0 to 4,294,967,295

Cioè nei numeri che possono rappresentare e sui bytes che occupano.
 
Non capisco se la richiesta di informazioni si riferisce al tipo di campo o all'attributo numerico tra parentesi dopo il tipo di campo.
L'indicazione dell'attributo sui numerici, invece, non modifica il tipo di campo ma influisce sulla visualizzazione del valore, indicandone il numero minimo di caratteri in output.
Ad esempio, se abbiamo un campo INT(4), ma il valore inserito è "2", questo verrà visualizzato come " 2" per occupare 4 posizioni, con il carattere di riempimento " " (spazio) a sinistra del valore.
Aggiungendo l'opzione ZEROFILL, si avrà lo stesso allineamento del numero a destra, ma con carattere di riempimento "0" => "0002".

:byebye:

questa non l'ho capita.

ma intendi dire come visualizzazione del numero?

vediamos e ho ben capito in base a questo

http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

se io ho una tabella dove gestire 1000 ID mi basta mettere SMALLINT se invece voglio gestire un numero infinito di ID devo mettere int.

se è cosi il numero tra parentesi nonh o capito cosa intende gestire tipo la differenza tra int(2) e int(4)?

Significa forse int(2)massimo 2 cifre quindi fino a 99 mentre int(4) finoa 4 cifre quindi 999?
 
questa non l'ho capita.

ma intendi dire come visualizzazione del numero?

vediamos e ho ben capito in base a questo

http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

se io ho una tabella dove gestire 1000 ID mi basta mettere SMALLINT se invece voglio gestire un numero infinito di ID devo mettere int.

se è cosi il numero tra parentesi nonh o capito cosa intende gestire tipo la differenza tra int(2) e int(4)?

Significa forse int(2)massimo 2 cifre quindi fino a 99 mentre int(4) finoa 4 cifre quindi 999?


Il campo sul database (mysql, come dice giustamente Longo8, altri db non hanno questa particolarità) gestisce il valore numerico indifferentemente da quanto indicato tra parentesi: un campo int avrà sempre lo stesso range di valori (da -2147483648 a 2147483647 o da 0 a 4294967295), anche se tra parentesi c'è "2".
Il valore tra parentesi è un attributo che influisce sulla sola visualizzazione del valore del campo, che sarà troncato o riempito per avere la dimensione indicata.

Ad esempio, creiamo una tabella con un campo int:
create table nome_tabella (nome_colonna int(3) zerofill);

inseriamo 3 valori di diversa lunghezza:
insert into nome_tabella (nome_colonna) values (9),(55),(112);

facendo una select, il risultato sarà il seguente:
009
055
112

perchè è stato indicato sul campo che la visualizzazione è fissa a 3 caratteri con completamento del campo con zeri (zerofill).
 

Discussioni simili