Che cos’è MySQL TINYINT? Intervallo, utilizzo UNSIGNED e esempi pratici

1. Cos’è MySQL TINYINT?

In MySQL, TINYINT è un tipo di dato usato per memorizzare interi molto piccoli. TINYINT occupa 1 byte (8 bit) di memoria e può memorizzare valori da -128 a 127 quando è signed, o da 0 a 255 quando è unsigned. TINYINT è principalmente usato per gestire in modo efficiente piccoli valori numerici e flag booleani.

Caratteristiche di TINYINT

  • Efficienza di memoria: Poiché TINYINT utilizza solo 1 byte, consente di risparmiare più memoria rispetto ad altri tipi interi come INT o BIGINT.
  • Opzioni signed e unsigned: Un TINYINT signed può gestire valori negativi, mentre l’opzione unsigned amplia il range positivo massimo.

Esempio di utilizzo di TINYINT

Nel seguente esempio, viene creata una tabella usando il tipo TINYINT per gestire piccoli valori numerici e flag.

CREATE TABLE user_status (
    user_id INT PRIMARY KEY,
    is_active TINYINT(1) NOT NULL DEFAULT 0
);

In questo esempio, la colonna is_active è definita come TINYINT(1) ed è usata per gestire se un utente è attivo. Un valore 0 indica “inactive” (non attivo), e 1 indica “active” (attivo).

2. Casi d’uso pratici per TINYINT

TINYINT è un tipo di dato ideale per gestire piccoli interi e valori booleani. È ampiamente usato per massimizzare le prestazioni del database e ridurre il consumo di spazio.

Usare TINYINT come valore booleano

Poiché MySQL non dispone di un tipo BOOLEAN dedicato, TINYINT(1) è comunemente usato come sostituto per gestire valori booleani. In genere, 0 rappresenta “false” (falso) e 1 rappresenta “true” (vero). Questo approccio semplifica la gestione dei flag.

UPDATE user_status SET is_active = NOT is_active WHERE user_id = 1;

In questo esempio, il valore di is_active per l’utente specificato viene invertito. Questo consente di passare facilmente tra valori booleani.

Gestire piccoli valori numerici

Ad esempio, TINYINT è efficace anche nella gestione di interi all’interno di un intervallo molto piccolo, come i conteggi di inventario dei prodotti. Se il numero di prodotti non supera 255, l’uso di TINYINT UNSIGNED consente una gestione adeguata dei dati all’interno del range numerico unsigned.

3. Confrontare TINYINT con altri tipi interi

MySQL offre vari tipi interi, e TINYINT è il più piccolo tra essi. Al contrario, INT e BIGINT possono memorizzare intervalli di valori molto più ampi. Di seguito le differenze tra TINYINT e gli altri principali tipi interi.

Differenza tra INT e TINYINT

INT utilizza 4 byte e supporta valori da -2147483648 a 2147483647, mentre TINYINT utilizza solo 1 byte e supporta valori da -128 a 127 (signed) o da 0 a 255 (unsigned). Pertanto, usando TINYINT è possibile gestire i dati in modo efficiente entro un intervallo appropriato risparmiando memoria.

Confronto con altri piccoli tipi interi

Oltre a TINYINT, MySQL fornisce tipi di dato come SMALLINT (2 byte) e MEDIUMINT (3 byte). Il range numerico varia in base alla dimensione in byte di ciascun tipo, quindi è importante scegliere il tipo di dato appropriato.

4. Scegliere tra signed e unsigned

In MySQL, il tipo TINYINT può essere definito come signed o unsigned. Comprendere la differenza e scegliere in modo appropriato porta a una gestione dei dati più efficiente.

Vantaggi di TINYINT UNSIGNED

Un TINYINT unsigned (TINYINT UNSIGNED) supporta valori da 0 a 255, risultando utile quando i valori negativi non sono necessari. Ad esempio, per memorizzare l’età dell’utente o la quantità di prodotto—dove i valori negativi sono superflui—l’uso di UNSIGNED amplia il range utilizzabile e consente una gestione più efficiente dei dati.

Vantaggi di TINYINT signed

Un TINYINT signed supporta valori da -128 a 127, risultando adatto quando sono richiesti valori negativi. Ad esempio, per dati come la temperatura, dove possono verificarsi valori negativi, l’opzione signed è appropriata.

5. Esempio di utilizzo di TINYINT

Ecco un esempio di come utilizzare TINYINT per gestire i dati all’interno di un database. Ad esempio, quando si gestiscono le quantità di prodotto, è possibile definire la tabella come segue:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    quantity TINYINT UNSIGNED NOT NULL
);

In questo esempio, l’inventario del prodotto quantity è gestito come un TINYINT unsigned, consentendo valori fino a 255. Inoltre, specificando NOT NULL, si garantisce che un valore sia sempre impostato.

Puoi anche utilizzare TINYINT per gestire i flag di stato degli utenti in modo semplice ed efficiente. Specialmente quando si gestiscono grandi volumi di dati, l’uso di TINYINT può migliorare le prestazioni complessive del database.

6. Riepilogo e migliori pratiche

TINYINT è uno dei tipi di dati più efficienti in termini di memoria in MySQL ed è ideale per gestire in modo efficiente piccoli interi e flag. Utilizzando TINYINT per valori booleani o piccoli intervalli numerici, è possibile ottimizzare sia l’uso dello spazio di archiviazione sia le prestazioni del database.