1. Introduzione
MySQL è un popolare sistema di gestione di database relazionali ampiamente utilizzato in molte applicazioni web e sistemi di database. Tra i suoi tipi di dati, il tipo INT è uno dei più comunemente usati per gestire valori numerici. Questo articolo fornisce una spiegazione dettagliata del tipo INT di MySQL. In particolare, esploreremo i valori massimi supportati dal tipo INT e come usarlo in modo efficiente. Leggendo questo articolo, otterrai le conoscenze necessarie per utilizzare correttamente il tipo INT in MySQL.
2. Specifiche di base del tipo INT
Valori massimi e minimi di INT
Il tipo INT di MySQL utilizza 4 byte (32 bit) di spazio di archiviazione, e l’intervallo di valori che può memorizzare è il seguente:
- Signed (SIGNED) :
- Valore minimo: -2.147.483.648
- Valore massimo: 2.147.483.647
- Unsigned (UNSIGNED) :
- Valore minimo: 0
- Valore massimo: 4.294.967.295
Dimensione di archiviazione di INT
Il tipo INT utilizza sempre 4 byte di spazio. Questa dimensione rimane costante indipendentemente dal valore memorizzato. Pertanto, se non è necessario gestire un intervallo numerico molto ampio, è più efficiente considerare tipi di dati più piccoli (ad esempio, TINYINT o SMALLINT).
Casi d’uso per INT
Il tipo INT è comunemente usato nei seguenti scenari:
- Valori auto‑incrementanti (ad es., ID utente, numeri d’ordine)
- Dati interi utilizzati in calcoli o elaborazioni statistiche (ad es., conteggi di inventario, conteggi di click)
- Dati rappresentati entro un intervallo fisso (ad es., età o punteggi di test)
In questi casi d’uso, è importante considerare l’intervallo numerico richiesto e l’efficienza della memoria.
3. Cosa significa M in INT(M)?
Che cos’è la larghezza di visualizzazione (M)?
In MySQL, la M in INT(M) rappresenta la “larghezza di visualizzazione”. Non influisce sul valore numerico effettivamente memorizzato nel database; invece, specifica come il valore viene formattato quando viene visualizzato. Per esempio, se definito come INT(5), il numero sarà mostrato con una larghezza di 5 cifre.
Tuttavia, la larghezza di visualizzazione M ha senso solo nel seguente caso:
- Quando è abilitata l’opzione ZEROFILL
- Esempio: con
INT(5) ZEROFILL, se il valore è123, verrà visualizzato come00123.
Note importanti su ZEROFILL
Quando si utilizza l’opzione ZEROFILL, si applicano le seguenti caratteristiche:
- Gli zeri iniziali vengono aggiunti automaticamente a sinistra.
- L’attributo
UNSIGNEDviene applicato automaticamente.
Pertanto, se è necessario memorizzare valori negativi, non è possibile usare ZEROFILL.
Chiarimento di fraintendimenti comuni
Molti principianti credono erroneamente che M limiti il valore massimo memorizzabile. In realtà, M influisce solo sulla formattazione di visualizzazione e non ha alcun impatto sull’intervallo di archiviazione reale.
4. Confronto con altri tipi interi
Tipi di dati interi e i loro intervalli
MySQL fornisce i seguenti tipi interi:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| 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 | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Criteri di selezione
Utilizza le seguenti linee guida quando scegli un tipo di dato appropriato nella progettazione del database:
- Se l’intervallo è piccolo: usa
TINYINToSMALLINTper risparmiare memoria. - Se è richiesto un intervallo estremamente ampio: usa
BIGINT. - Se è desiderato un utilizzo generico:
INTè solitamente l’opzione ottimale.
5. Modifiche a partire da MySQL 8.0.17
Deprecazione della larghezza di visualizzazione (M)
A partire da MySQL 8.0.17, la “larghezza di visualizzazione (M)” per i tipi interi è stata deprecata. Questa modifica è stata introdotta insieme alla deprecazione dell’opzione ZEROFILL e potrebbe essere rimossa nelle future versioni di MySQL.
Le ragioni della deprecazione della larghezza di visualizzazione sono le seguenti:
- Ha causato fraintendimenti:
- Molti utenti hanno frainteso che
Minfluenzasse il valore massimo memorizzabile o il numero di cifre.
- Utilità pratica limitata:
- Poiché
Mcontrollava solo la formattazione di visualizzazione, ora tale formattazione è gestita comunemente a livello dell’applicazione, riducendone la necessità.
Deprecazione di ZEROFILL
L’opzione ZEROFILL è stata deprecata nella stessa versione. Sebbene ZEROFILL fosse comoda per aggiungere zeri iniziali ai numeri, non è più consigliata per i seguenti motivi:
- Approcci alternativi diffusi:
- L’aggiunta di zeri iniziali può ora essere gestita facilmente nel livello di applicazione o interfaccia utente.
- Evitare confusione:
- L’applicazione automatica dell’attributo
UNSIGNEDquando si usaZEROFILLha causato confusione per gli utenti principianti.
Come Adattarsi alla Deprecazione
In risposta a queste deprecazioni, considera i seguenti approcci nel design del database:
- Gestire la formattazione nel livello di applicazione:
- Esegui l’aggiunta di zeri iniziali e la formattazione nel livello di applicazione o presentazione.
- Esempio: Implementa l’aggiunta di zeri iniziali usando PHP o JavaScript.
- Adotta un design che non si basa sulla larghezza di visualizzazione:
- Definisci il tipo
INTsenza specificareMe concentrati sull’accuratezza dei dati piuttosto che sulla formattazione di visualizzazione.
6. Sezione FAQ Pratica
Domande Frequenti
D1. Cosa succede se memorizzo un valore che supera il massimo del tipo INT?
R. In MySQL, il tentativo di memorizzare un valore al di fuori dell’intervallo del tipo INT risulterà in un errore. Devi scegliere un valore all’interno dell’intervallo supportato o passare a un tipo di dati con un intervallo maggiore (ad esempio, BIGINT).
D2. Qual è la differenza tra INT e BIGINT?
R. Il tipo BIGINT utilizza il doppio dello spazio di archiviazione di INT (8 byte) e fornisce un intervallo numerico molto più ampio. Ad esempio, l’intervallo con segno di BIGINT supera ±9 quintilioni, rendendolo adatto per la gestione di dataset molto grandi.
D3. Dopo la deprecazione di ZEROFILL, come dovrei implementare la visualizzazione con zeri iniziali?
R. Si consiglia di gestire l’aggiunta di zeri iniziali nel livello di applicazione. Ad esempio, in PHP puoi usare la funzione str_pad(), e in JavaScript puoi usare il metodo padStart() per implementare l’aggiunta di zeri iniziali.
D4. Come dovrei scegliere tra INT e altri tipi interi?
R. Seleziona il tipo in base all’intervallo dei dati. Valori numerici piccoli (ad esempio, età o punteggi) sono adatti per TINYINT, dati su scala media (ad esempio, ID utente) sono adatti per INT, e valori molto grandi (ad esempio, dati di transazioni finanziarie) sono adatti per BIGINT.
7. Conclusione
In questo articolo, abbiamo fornito una spiegazione dettagliata del tipo di dati INT di MySQL. I punti chiave sono i seguenti:
- Comprendere le differenze tra i valori massimi e minimi con segno e senza segno del tipo
INTforma la base di un design dei dati appropriato. - È importante comprendere approcci alternativi alle opzioni deprecate “larghezza di visualizzazione (M)” e “ZEROFILL” e progettare database che possano adattarsi a futuri aggiornamenti di MySQL.
- Seleziona il tipo intero appropriato in base alle caratteristiche dei dati per costruire un database efficiente e manutenibile.
Usa questo articolo come riferimento per ottimizzare l’uso del tipo INT e migliorare ulteriormente l’efficienza nel design del database MySQL.


