Accedi
Accedi

Tipi di dati MySQL: panoramica, esempi di utilizzo e best practice

Tipi di dati MySQL: panoramica, esempi di utilizzo e best practice
Hostman Team
Technical writer
Database MySQL
19.01.2026
Reading time: 7 min

Durante la configurazione di un database in MySQL, l’utente deve assegnare un nome e un tipo di dati a ciascuna colonna di una tabella. Questo processo consente al sistema di comprendere esattamente quale tipo di dati verrà memorizzato e come verrà elaborato, oltre a determinare la quantità di memoria necessaria.

Esistono diverse classi principali di tipi di dati nelle tabelle MySQL, tra cui tipi numerici, tipi di caratteri, tipi di data e ora e altri. Ogni classe contiene diversi tipi di dati specifici. È importante definirli correttamente nella fase iniziale di creazione delle tabelle per evitare problemi una volta completata la struttura del database.

Questo articolo descrive i principali tipi di dati MySQL, la loro struttura, i valori validi e le modalità di utilizzo consigliate.

Tipi numerici

MySQL supporta tutti i tipi di dati numerici SQL standard, utilizzati per memorizzare numeri. Questo articolo tratta:

  • Interi

  • Numeri in virgola mobile

  • Numeri a virgola fissa

Ciascuno di questi viene descritto più nel dettaglio di seguito.

Interi

Gli interi vengono utilizzati per memorizzare numeri interi con segno o senza segno. I tipi con segno possono memorizzare valori positivi e negativi, mentre i tipi senza segno memorizzano solo valori positivi, raddoppiando di fatto l’intervallo di valori.

Esistono cinque tipi principali di interi: TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT. La differenza principale riguarda l’intervallo di valori che possono memorizzare: maggiore è l’intervallo, maggiore è la quantità di memoria richiesta. È importante selezionare il tipo corretto per allocare la memoria in modo efficiente durante la creazione delle tabelle.

Tipo

Memoria (byte)

Intervallo con segno

Intervallo senza segno

TINYINT

1

−2⁷ a 2⁷−1

0 a 2⁸−1

SMALLINT

2

−2¹⁵ a 2¹⁵−1

0 a 2¹⁶−1

MEDIUMINT

3

−2²³ a 2²³−1

0 a 2²⁴−1

INT

4

−2³¹ a 2³¹−1

0 a 2³²−1

BIGINT

8

−2⁶³ a 2⁶³−1

0 a 2⁶⁴−1

La specifica della dimensione (ad esempio MEDIUMINT(6)) non influisce sull’intervallo di valori. È puramente estetica e viene utilizzata da alcuni strumenti per riempire i numeri più corti con spazi.
È possibile utilizzare anche l’attributo ZEROFILL per riempire con zeri anziché con spazi. Ad esempio, SMALLINT(8) ZEROFILL visualizzerà 256 come 00000256.

Numeri in virgola mobile

Vengono utilizzati per memorizzare valori numerici approssimativi. MySQL consente di definire la precisione nel seguente modo:

FLOAT(p)

Dove p è la precisione, compresa tra 0 e 53.

  • Se p < 25, viene utilizzato FLOAT (precisione singola).

  • Altrimenti, viene utilizzato DOUBLE (precisione doppia).

Tipo

Memoria (byte)

Intervallo di valori

FLOAT

4

~±3,4028 × 10³⁸

DOUBLE

8

~±1,7976 × 10³⁸

Numeri a virgola fissa

Vengono utilizzati per memorizzare valori esatti con una precisione definita. I tipi DECIMAL o NUMERIC sono utilizzati, in particolare per i calcoli finanziari, dove l’arrotondamento non è accettabile.

Definizione:

DECIMAL(M, D)

  • M: numero totale di cifre (fino a 65; valore predefinito 10)

  • D: numero di cifre dopo la virgola (0–30; valore predefinito 0)

Esempio:

DECIMAL(6, 3)

Memorizza valori da -999.999 a 999.999.
DECIMAL e NUMERIC sono funzionalmente equivalenti.

Tipi di caratteri

Progettati per memorizzare testi brevi, i tipi di dati di caratteri in MySQL includono CHAR e VARCHAR. Sono simili, ma differiscono per il modo in cui i dati vengono memorizzati e recuperati.

CHAR memorizza una stringa a lunghezza fissa (da 0 a 2⁸−1 caratteri), definita al momento della creazione della tabella. Se viene inserita una stringa più corta, i caratteri rimanenti vengono riempiti con spazi.

VARCHAR memorizza una stringa a lunghezza variabile (da 0 a 2¹⁶−1 caratteri). A differenza di CHAR, memorizza solo il numero effettivo di caratteri e utilizza 1 byte aggiuntivo per memorizzare la lunghezza della stringa.

Se la stringa di input supera la lunghezza definita per CHAR o VARCHAR, viene troncata.

Durante la creazione della tabella, se vengono combinate colonne CHAR e VARCHAR, MySQL convertirà automaticamente CHAR in VARCHAR.

Confronto tra CHAR(5) e VARCHAR(5)

Stringa

CHAR(5)

VARCHAR(5)

'A'

'A '

'A'

'Hello'

'Hello'

'Hello'

'Example'

'Examp'

'Examp'

Tipi TEXT e binari

Il tipo TEXT in MySQL viene utilizzato per memorizzare grandi quantità di dati testuali, mentre il tipo BLOB è progettato per dati binari come immagini, codice compilato o audio.

Differenze principali:

  • BLOB: ordinamento e confronti sensibili alle maiuscole/minuscole.

  • TEXT: ordinamento e confronti non sensibili alle maiuscole/minuscole.

MySQL non può indicizzare l’intera lunghezza dei campi TEXT o BLOB e non supporta l’ordinamento tramite indici sull’intero campo.

Se la lunghezza della stringa supera il massimo consentito, l’input viene troncato.

Tipi TEXT

Tipo

Memoria (byte)

Caratteri max

TINYTEXT

2⁸−1

fino a 2⁸−1

TEXT

2¹⁶−1

fino a 2¹⁶−1

MEDIUMTEXT

2²⁴−1

fino a 2²⁴−1

LONGTEXT

2³²−1

fino a 2³²−1

Tipi BLOB

Tipo

Memoria (byte)

Byte max

TINYBLOB

2⁸−1

fino a 2⁸−1

BLOB

2¹⁶−1

fino a 2¹⁶−1

MEDIUMBLOB

2²⁴−1

fino a 2²⁴−1

LONGBLOB

2³²−1

fino a 2³²−1

Data e ora

MySQL fornisce diversi tipi di dati per memorizzare informazioni di data e ora:

Tipo

Memoria (byte)

Descrizione

DATE

3

Memorizza solo la data nel formato YYYY-MM-DD.

DATETIME

8

Memorizza data e ora nel formato YYYY-MM-DD HH:MM:SS.

TIMESTAMP

4

Simile a DATETIME, ma con un intervallo più limitato (1970–2038).

TIME

3

Memorizza solo l’ora, da −838:59:59 a 838:59:59.

YEAR

1

Memorizza solo l’anno nel formato YYYY.

JSON

MySQL supporta un tipo di dati JSON nativo dalla versione 5.7.8, che offre i seguenti vantaggi:

  • Validazione automatica dei dati JSON.

  • Formato di archiviazione binario ottimizzato per un accesso e interrogazioni più rapide.

La memoria richiesta è approssimativamente equivalente a LONGTEXT.

Tipi compositi

MySQL fornisce tipi di stringa speciali che memorizzano valori da un insieme fisso predefinito: ENUM e SET.

  • ENUM memorizza un singolo valore dall’elenco e richiede fino a 2 byte di memoria.

  • SET può memorizzare fino a 26 valori contemporaneamente e utilizza fino a 8 byte di memoria.

Esempio

ENUM('a', 's', 'd')

La colonna può contenere solo uno dei seguenti valori: 'a', 's' o 'd'.

SET('a', 's', 'd')

La colonna può contenere qualsiasi combinazione dei valori elencati, inclusi:
'a', 's', 'd', 'a,s', 'a,d', 's,d', 'a,s,d' oppure un insieme vuoto ('').

Se un utente inserisce un valore come ('a', 's', 'a') in un SET, MySQL rimuove automaticamente i duplicati e ordina i valori in base all’ordine di dichiarazione originale. Il valore memorizzato sarà quindi 'a,s'.

Conclusione

Questo articolo ha illustrato i tipi di dati MySQL più comunemente utilizzati per definire le colonne delle tabelle. Grazie a queste conoscenze, gli utenti possono selezionare i tipi appropriati e progettare in modo efficace la struttura del database. Per tipi di dati più dettagliati e meno comuni, si consiglia di consultare la documentazione ufficiale di MySQL.

È possibile utilizzare i database cloud di Hostman per esercitarsi a lavorare con MySQL e i suoi diversi tipi di dati. I principali vantaggi dell’utilizzo di MySQL nel cloud includono:

  • Manutenzione e configurazione del database da parte del provider

  • Elevata affidabilità, alta disponibilità e tolleranza ai guasti

  • Backup automatici

  • Scalabilità orizzontale e verticale rapida

  • Funzionamento continuo tramite replica in cluster

  • Esecuzione del database sulle risorse computazionali di una piattaforma cloud

Database MySQL
19.01.2026
Reading time: 7 min

Simili

Sistema: Debian

Come installare MySQL su Debian

Installare MySQL su Debian consente di creare un'infrastruttura di database (DB) solida e flessibile, adatta a una vasta gamma di applicazioni e servizi. MySQL è noto per la sua scalabilità, affidabilità e stabilità. Una volta configurato, migliora l'efficienza operativa e le prestazioni complessive dell'infrastruttura dati. Questa combinazione è particolarmente utile per amministratori, analisti di database e settori che richiedono una soluzione affidabile per gestire grandi quantità di dati. Inoltre, le guide dettagliate di MySQL e la sua community semplificano la risoluzione dei problemi e l'ottimizzazione delle operazioni. In questa guida mostreremo il processo completo per installare e configurare MySQL su Debian. Come installare MySQL su Debian I repository predefiniti di Debian non includono il pacchetto del server MySQL. Per installarlo su un sistema Linux, segui le istruzioni riportate di seguito. Scaricheremo la versione più recente di MySQL. Passaggio 1: Scarica il pacchetto MySQL Ottieni il pacchetto delle informazioni del repository MySQL in formato .deb: wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb Nota: per verificare l'ultima versione disponibile, visita la pagina del repository MySQL. Passaggio 2: Installa il pacchetto di configurazione MySQL Utilizza il file .deb per avviare l'installazione con dpkg: sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb Rispondi alle richieste a schermo. Ad esempio, seleziona "MySQL Server & Cluster" e premi Invio per avviare la configurazione. Per scegliere una versione come mysql-8.4-lts, scorri verso il basso e conferma con OK. Passaggio 3: Aggiorna il sistema Aggiorna gli indici dei pacchetti del sistema per applicare le nuove informazioni di MySQL: sudo apt update Passaggio 4: Installa MySQL Il gestore di pacchetti predefinito di Debian semplifica l’installazione. Esegui il seguente comando: sudo apt install mysql-server -y Apparirà un'interfaccia che ti chiederà di impostare una password per l’utente root. Inserisci una password sicura e conferma. Verifica la versione installata: mysql --version Passaggio 5: Gestisci i servizi Abilita l'avvio automatico del servizio MySQL all'accensione: sudo systemctl enable mysql Avvia il servizio: sudo systemctl start mysql Controlla lo stato del servizio: sudo systemctl status mysql Prima di aprire la porta 3306 ai client, consulta la guida Creare un tunnel SSH per MySQL per imparare a proteggere l’accesso tramite SSH ed evitare di esporre MySQL direttamente su Internet. Passaggio 6: Messa in sicurezza dell’installazione di MySQL La password impostata all'inizio protegge l'utente root del server. MySQL include anche alcune impostazioni predefinite poco sicure, come l’accesso remoto all’utente root e ai database di test. Per proteggere MySQL dopo l’installazione, usa il seguente script: sudo mysql_secure_installation Per attivare la verifica delle password (VALIDATE PASSWORD), digita Y e premi Invio. Segui poi queste configurazioni: Imposta una password sicura per l’utente root e verifica che sia corretta. Configura anche la politica delle password del server. Ad esempio, digita 2 per accettare solo password complesse, quindi premi Invio. Se richiesto di cambiare la password root, digita N per mantenere quella esistente oppure Y per cambiarla.   Elimina gli utenti anonimi: per maggiore sicurezza, digita Y e premi Invio.   Disabilita l’accesso remoto all’utente root: per evitare rischi, digita Y e premi Invio.   Rimuovi il database di test: per eliminarlo, digita Y e premi Invio.   Aggiorna le tabelle dei privilegi: premi Invio per applicare le modifiche. Passaggio 7: Accedi a MySQL Utilizza il client mysql per stabilire la connessione e accedere alla console del server MySQL. sudo mysql -u root -p Inserisci la password root per accedere alla shell e iniziare a eseguire comandi SQL. Passaggio 8: Operazioni di base con MySQL È buona prassi creare un database e un utente separato per le applicazioni, invece di usare root. Ecco i passaggi: Crea un database: Per prima cosa, crea un database. Ad esempio, puoi creare uno chiamato hostmandb con il comando: CREATE DATABASE hostmandb; Mostra tutti i database: Per verificare che hostmandb sia stato creato correttamente, elenca tutti i database: SHOW DATABASES; Crea un nuovo utente: Crea un nuovo utente con una password sicura. In questo esempio, l’utente è minhal con la password Qwer@1234. Sostituisci questi valori con i tuoi: CREATE USER 'minhal'@'localhost' IDENTIFIED BY 'Qwer@1234'; Assegna i privilegi all’utente: Concedi all’utente pieno accesso al database hostmandb: GRANT ALL PRIVILEGES ON hostmandb.* TO 'minhal'@'localhost'; Applica i privilegi: Per rendere effettive le modifiche, ricarica i privilegi: FLUSH PRIVILEGES; Esci dalla shell: Chiudi la sessione della shell MySQL: EXIT; Accedi alla console come nuovo utente: Per testare l’accesso al database hostmandb, accedi come il nuovo utente minhal: sudo mysql -u minhal -p Dopo aver inserito la password di minhal, accederai alla console. Digita: SHOW DATABASES; Passaggio 9: Configura l'accesso remoto Per accedere a MySQL da remoto, configura il server seguendo questi passaggi: Apri il file di configurazione: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Trova la riga bind-address e modificala in: bind-address = 0.0.0.0 Riavvia MySQL: sudo systemctl restart mysql Concedi l’accesso remoto all’utente: sudo mysql -u root -p GRANT ALL PRIVILEGES ON hostmandb.* TO 'minhal'@'localhost';FLUSH PRIVILEGES;EXIT; Passaggio 10: Configura il firewall Se il firewall è attivo, devi aprire la porta 3306 per il traffico MySQL: Consenti il traffico MySQL: sudo ufw allow mysql Attiva UFW: sudo ufw enable Ricarica UFW: sudo ufw reload Passaggio 11: Backup e ripristino Eseguire backup regolari è fondamentale per evitare la perdita di dati. Usa mysqldump per creare copie di sicurezza: Backup di un singolo database: Questo comando utilizza mysqldump per creare una copia di backup del database hostmandb in un file chiamato hostmandb_backup.sql: sudo mysqldump -u root -p hostmandb> hostmandb_backup.sql Backup di tutti i database: Per creare un backup completo di tutti i database in un file chiamato all_databases_backup.sql, utilizza il seguente comando con i privilegi di root: sudo mysqldump -u root -p --all-databases > all_databases_backup.sql Ripristina un database: Ora puoi ripristinare il database hostmandb dal file di backup hostmandb_backup.sql: sudo mysql -u root -p hostmandb < hostmandb_backup.sql Passaggio 12: Ottimizza le prestazioni di MySQL (facoltativo) A seconda del carico di lavoro e delle risorse del server, puoi modificare le impostazioni per ottenere prestazioni migliori. Aumenta la dimensione del buffer pool InnoDB: Le cache per i dati e gli indici sono conservate nel buffer pool InnoDB. Aumentare le sue dimensioni può migliorare significativamente le prestazioni. Per farlo, modifica il file di configurazione di MySQL: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Aggiungi o modifica la seguente riga: innodb_buffer_pool_size = 1G La dimensione deve essere regolata in base alla quantità di memoria disponibile sul server. Abilita la cache delle query: La cache delle query memorizza i risultati delle interrogazioni SELECT. Abilitarla può migliorare le prestazioni nel caso di query ripetitive. Per abilitarla, modifica il file .cnf: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Aggiungi o modifica le seguenti righe: query_cache_type = 1query_cache_size = 64M Ottimizza la struttura delle tabelle: Ottimizza regolarmente la tabella customers del database hostmandb per recuperare spazio inutilizzato e migliorare l’efficienza: USE hostmandb;OPTIMIZE TABLE customers; Analizza le operazioni: Le operazioni del database possono essere monitorate e analizzate con strumenti come MySQL Workbench o mysqltuner. Per installare mysqltuner, usa il comando: sudo apt install mysqltuner Esegui mysqltuner per ricevere suggerimenti di ottimizzazione: sudo mysqltuner Conclusione Configurare un ambiente MySQL è essenziale nel mondo digitale odierno. Seguendo questa guida potrai installare e collegarti al tuo database MySQL in modo sicuro. Questa strategia non solo migliora la sicurezza ma facilita anche la gestione remota. L'articolo fornisce istruzioni dettagliate per installare l'ambiente MySQL su Debian. È consigliabile monitorare e ottimizzare regolarmente i server MySQL per mantenere prestazioni e affidabilità elevate. Inoltre, Hostman offre database cloud preconfigurati e pronti all’uso, incluso MySQL nel cloud.
16 July 2025 · 7 min to read

Hai domande,
commenti o dubbi?

I nostri professionisti sono disponibili per assisterti in ogni momento,
che tu abbia bisogno di aiuto o non sappia da dove iniziare.
Inviaci un'email
Hostman's Support