MySQL prevede cinque principali categorie di tipi di dati: numerici, stringa, data/ora, spaziali e JSON. Ogni categoria include diversi tipi specifici per gestire al meglio i dati. I tipi di dati spaziali e JSON non sono qui trattati.
Tipi di numeri interi
In MySQL esistono cinque tipi di numero intero: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT. Ognuno ha un intervallo e una dimensione di memoria diversa.
| Byte | Intervallo (Signed) | Intervallo (Unsigned) | |
|---|---|---|---|
| TINYINT | 1 | da -128 a 127 | da 0 a 255 |
| SMALLINT | 2 | da -32.768 a 32.767 | da 0 a 65.535 |
| MEDIUMINT | 3 | da -8.388.608 a 8.388.607 | da 0 a 16.777.215 |
| INT | 4 | da -2.147.483.648 a 2.147.483.647 | da 0 a 4.294.967.295 |
| INTEGER | 4 | Alias di INT | Alias di INT |
| BIGINT | 8 | da -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | da 0 a 18.446.744.073.709.551.615 |
Tipi di numeri con decimali
In MySQL, i principali tipi di numero non intero sono: DECIMAL, FLOAT e DOUBLE. Si differenziano per precisione, uso e modalità di memorizzazione.
| Tipo | Precisione | Memoria | Uso consigliato |
|---|---|---|---|
| DECIMAL(M,D) | Esatta (fissa) | Variabile (dipende da M,D) | Prezzi, valute, percentuali |
| FLOAT | Approssimativa (~7 cifre) | 4 byte | Misure scientifiche, dati sensori |
| DOUBLE | Approssimativa (~15 cifre) | 8 byte | Calcoli scientifici ad alta precisione |
Significato di M e D in DECIMAL(M,D)
- M (Precisione totale): indica il numero massimo di cifre che il numero può contenere, inclusi i decimali.
- D (Scala): indica quante cifre ci sono dopo la virgola.
Esempio pratico
DECIMAL(6,2)
- M = 6 → massimo 6 cifre totali
- D = 2 → 2 cifre dopo la virgola
Quindi può contenere numeri da -9999.99 a 9999.99.
Tipi di testo
MySQL offre diversi tipi di dati testuali, suddivisi in categorie per lunghezza e uso: CHAR, VARCHAR, TEXT, ENUM e SET. Ogni tipo è pensato per gestire specifiche esigenze di memorizzazione e prestazioni.
| Tipo | Lunghezza massima | Descrizione |
|---|---|---|
| CHAR(n) | Fino a 255 caratteri | Stringa a lunghezza fissa |
| VARCHAR(n) | Fino a 65.535 caratteri | Stringa a lunghezza variabile |
| TINYTEXT | 255 caratteri | Testo breve, simile a VARCHAR |
| TEXT | 65.535 caratteri | Testo medio, per descrizioni o contenuti lunghi |
| MEDIUMTEXT | 16.777.215 caratteri | Testo molto lungo, es. articoli o documenti |
| LONGTEXT | 4.294.967.295 caratteri | Testo enorme, es. libri o archivi |
| ENUM(val1,…) | 1 valore da lista | Scelta singola da un elenco predefinito |
| SET(val1,…) | 0 o più valori da lista | Scelte multiple da un elenco predefinito |
Esempio di utilizzo di ENUM
CREATE TABLE utenti (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
genere ENUM('maschio', 'femmina', 'non specificato') DEFAULT 'non specificato'
);
Tipi di data/ora
MySQL supporta cinque principali tipi di dati per gestire date e orari: DATE, TIME, DATETIME, TIMESTAMP e YEAR. Ognuno ha un formato e un uso specifico.
| Tipo | Formato | Descrizione |
|---|---|---|
| DATE | YYYY-MM-DD | Solo la data (es. 2025-10-13) |
| TIME | HH:MM:SS | Solo l’orario (es. 11:05:00) |
| DATETIME | YYYY-MM-DD HH:MM:SS | Data e ora combinati, senza fuso orario |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | Data e ora con fuso orario, utile per tracciare modifiche automatiche |
| YEAR | YYYY | Solo l’anno (es. 2025) |
Risorse Online
- w3schools.com: MySQL Data Types

0 commenti