Tipi di dati in MySQL

In MySQL, scegliere il tipo di dato giusto è fondamentale per ottimizzare spazio, velocità e precisione. Scopri quali usare e quando!
immagine dell'autore dell'articolo

Scritto da: Alberto

Una vita nell'informatica, per lavoro e per passione.
agsdix-far fa-calendar-alt
Data pubblicazione: 15 Ottobre 2025
Categorie: MySQL
agsdix-far fa-comments

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.

ByteIntervallo (Signed)Intervallo (Unsigned)
TINYINT1da -128 a 127da 0 a 255
SMALLINT2da -32.768 a 32.767da 0 a 65.535
MEDIUMINT3da -8.388.608 a 8.388.607da 0 a 16.777.215
INT4da -2.147.483.648 a 2.147.483.647da 0 a 4.294.967.295
INTEGER4Alias di INTAlias di INT
BIGINT8da -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807da 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.

TipoPrecisioneMemoriaUso consigliato
DECIMAL(M,D)Esatta (fissa)Variabile (dipende da M,D)Prezzi, valute, percentuali
FLOATApprossimativa (~7 cifre)4 byteMisure scientifiche, dati sensori
DOUBLEApprossimativa (~15 cifre)8 byteCalcoli 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.

TipoLunghezza massimaDescrizione
CHAR(n)Fino a 255 caratteriStringa a lunghezza fissa
VARCHAR(n)Fino a 65.535 caratteriStringa a lunghezza variabile
TINYTEXT255 caratteriTesto breve, simile a VARCHAR
TEXT65.535 caratteriTesto medio, per descrizioni o contenuti lunghi
MEDIUMTEXT16.777.215 caratteriTesto molto lungo, es. articoli o documenti
LONGTEXT4.294.967.295 caratteriTesto enorme, es. libri o archivi
ENUM(val1,…)1 valore da listaScelta singola da un elenco predefinito
SET(val1,…)0 o più valori da listaScelte 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.

TipoFormatoDescrizione
DATEYYYY-MM-DDSolo la data (es. 2025-10-13)
TIMEHH:MM:SSSolo l’orario (es. 11:05:00)
DATETIMEYYYY-MM-DD HH:MM:SSData e ora combinati, senza fuso orario
TIMESTAMPYYYY-MM-DD HH:MM:SSData e ora con fuso orario, utile per tracciare modifiche automatiche
YEARYYYYSolo l’anno (es. 2025)

Risorse Online

0 commenti