Campi numerici in mysql

Per chi si fosse mai chiesto che cosa voglia dire quel numero tra parentesi dopo int, tinyint ecc su mysql, ebbene quel numero viene usato nel caso in cui il campo abbia opzione “zerofill”, e si riferisce alle cifre del numero.
Se ad esempio impostate il campo di tipo int (10) zerofill, e inserite come valore il numero 15, la tabella visualizzerà 0000000015 (cioè 10 cifre invece di 2), oppure se il campo è un int (3) il valore visualizzato sarà 015.
Nulla cambia invece per la dimensione del campo in bytes, che per un intero int è di 4 bytes.
Possiamo cioè memorizzare un numero intero fino a 2^32 (4.294.967.296). Importante è settare il campo “unsigned” se prevediamo che non ci servano i valori negativi.
Infatti di default metà dei numeri a disposizione sono usati per rappresentare i valori negativi, pertanto di default su un campo int possiamo memorizzare da -2147483648 a 2147483647, mentre settando “unsigned” possiamo memorizzare da 0 a 4.294.967.295.
Se questo numero non ci dovessa bastare, possiamo usare il tipo BIGINT, che memorizza un numero fino a 2^64.
Ecco uno schema degli interi in mysql:

TINYINT – 1 byte (2^8 = 256)
SMALLINT – 2 bytes (2^16 = 65536)
MEDIUMINT – 3 bytes (2^24 = 16777216)
INT – 4 bytes (2^32 = 4.294.967.296)
BIGINT – 8 bytes (2^64 = 18.446.744.073.709.551.616)