Vai al contenuto principale

Tutorial MySQL: una guida completa per principianti

Scopri cos'è MySQL e come iniziare a usarlo, uno dei sistemi di gestione di database più popolari.
Aggiornato 29 set 2026  · 15 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

I dati sono la base della nostra società sempre più digitale. Dalle app mobili e i sistemi bancari ai motori di ricerca e ai chatbot di nuova generazione come ChatGPT, nessuno di questi strumenti sarebbe possibile senza i dati. Ti sei mai chiesto dove vengono archiviati tutti questi dati? Esatto: nei database.

Un database è una raccolta organizzata di dati strutturati, normalmente archiviati in un sistema informatico. Una grande parte dei dati nel mondo è archiviata in database relazionali.

In questo tutorial ci concentreremo su MySQL, un popolare sistema di gestione di database relazionali (RDBMS). Supportato da Oracle, MySQL è un database open source, affidabile, scalabile e facile da usare, adottato da alcune delle aziende più importanti del settore tech, tra cui Meta, Netflix e Airbnb.

Dopo aver letto questo articolo, sarai pronto a iniziare a usare questo strumento popolare e consolidato: dall'installazione sul tuo computer e la creazione di database, fino all'esecuzione di query SQL di base e operazioni più avanzate. Pronto alla sfida? Iniziamo!

Prerequisiti e concetti di base

Esistono molti tipi di database, ognuno dei quali è adatto ad archiviare diversi tipi di dati. Negli ultimi anni sono stati sviluppati nuovi tipi di database per rispondere alla crescente varietà di formati di dati. Nonostante l'ascesa dei cosiddetti database NoSQL, i database relazionali restano i più diffusi.

I database relazionali sono progettati per archiviare i dati come raccolte di tabelle predefinite con righe e colonne, collegate tramite una o più relazioni.

Il modo standard per creare, gestire e comunicare con i database è SQL (Structured Query Language). SQL è il mattone fondamentale di alcuni dei sistemi più popolari sul mercato, tra cui PostgreSQL, SQLite e MySQL.

Per seguire questo tutorial, consigliamo una conoscenza di base di SQL. Un ottimo modo per iniziare è il nostro corso Introduzione a SQL. Ti servirà anche MySQL sul tuo computer, quindi vediamo come installarlo.

Configurare MySQL

Installare lo strumento è un processo semplice. Devi solo scaricare l'installer giusto dal sito ufficiale, in base al sistema operativo del tuo computer, che sia macOS, Windows o Linux.

Installazione su macOS

Una volta scaricato il package installer di MySQL, segui le istruzioni della procedura guidata. Puoi eseguire l'installazione standard, oppure personalizzare i componenti da installare facendo clic sul pulsante "Customize".

MySQL Package Installer Wizard: Customize.

MySQL Package Installer Wizard: Customize. Fonte: MySQL

Dopo aver installato con successo il nuovo MySQL Server, completa i passaggi di configurazione scegliendo il tipo di crittografia predefinito per le password, definendo la password di root e abilitando (o disabilitando) il server MySQL all'avvio.

Quando si installa tramite il package installer, i file vengono installati in una directory all'interno di /usr/local corrispondente al nome della versione e della piattaforma di installazione.

Installazione su Windows

Installare MySQL su Windows è piuttosto semplice. Il metodo consigliato è scaricare il Windows Installer e lasciare che installi e configuri una versione specifica di MySQL. Se usi l'installazione predefinita, Windows avvierà automaticamente MySQL come host locale.

Installazione su Linux

Linux supporta diverse soluzioni per installare MySQL. MySQL consiglia di utilizzare una delle distribuzioni di Oracle, per le quali sono disponibili diversi metodi di installazione, come indicato nella documentazione.

Capire MySQL

Prima di iniziare a usare MySQL, vale la pena analizzare come funziona. Vediamo alcuni dei suoi concetti fondamentali.

Architettura di MySQL

Come molti altri popolari database relazionali, MySQL è progettato con un'architettura client-server.

In questo modello computazionale, un server è progettato per ospitare i dati, gestire le autorizzazioni e le configurazioni del database e gestire la maggior parte delle risorse e dei servizi richiesti dal client.

Nelle architetture client-server più comuni, c'è un server centralizzato e più client. Qualsiasi computer può essere un server se è configurato per fornire un servizio. Tuttavia, i server sono generalmente macchine molto potenti e di grandi dimensioni perché sono più adatte a gestire un elevato volume di richieste e dati.

Al contrario, i client possono trovarsi su qualsiasi tipo di computer.

Architettura client-server.

Architettura client-server. Fonte: DataCamp

In MySQL, questi due componenti sono il client MySQL e il server MySQL.

Tipi di dati

I tipi di dati servono a determinare i valori che una colonna può contenere. Funzionano come una sorta di metadato che aiuta SQL a capire che tipo di dati aspettarsi in ogni colonna e come elaborare le query su una specifica colonna.

MySQL supporta i normali tipi di dati SQL in tre principali categorie:

  • Tipi numerici
  • Tipi stringa
  • Tipi data e ora

Nelle tabelle seguenti trovi una panoramica dei principali tipi di dati in MySQL.

Tipi di dati numerici

Tipo di dato

Descrizione

TINYINT

Un intero molto piccolo.

SMALLINT

Un intero piccolo.

MEDIUMINT

Un intero di dimensioni medie.

INT o INTEGER

Un intero standard.

BIGINT

Un intero grande.

FLOAT

Un numero in virgola mobile.

DOUBLE

Un numero in virgola mobile a doppia precisione.

DECIMAL o NUMERIC

Un numero a virgola fissa.

Tipi di dati data e ora

Tipo di dato

Descrizione

DATE

Un valore di data nel formato YYYY-MM-DD.

TIME

Un valore di ora nel formato HH:MM:SS.

DATETIME

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

TIMESTAMP

Un valore timestamp nel formato YYYY-MM-DD HH:MM:SS.

YEAR

Un valore anno nel formato YYYY o YY.

Tipi di dati stringa

Tipo di dato

Descrizione

CHAR

Una stringa a lunghezza fissa.

VARCHAR

Una stringa a lunghezza variabile.

TINYTEXT

Una stringa di testo molto piccola.

TEXT

Una stringa di testo piccola.

MEDIUMTEXT

Una stringa di testo di dimensioni medie.

LONGTEXT

Una stringa di testo grande.

ENUM

Un oggetto stringa che può avere un solo valore, scelto da un elenco di valori predefiniti.

SET

Un oggetto stringa che può avere zero o più valori, scelti da un elenco di valori predefiniti.

Accedere a MySQL

Una volta installato MySQL sul tuo computer, puoi iniziare a usarlo dal terminale. Per avviare MySQL, puoi accedervi con il tuo nome utente e la password associata. In questo caso, accederemo a MySQL con l'account root, insieme alla password di root impostata durante l'installazione. Poiché stiamo effettuando il login sulla stessa macchina su cui è in esecuzione MySQL, non dobbiamo fornire informazioni nel parametro host (-h):

> mysql -uroot -p

Se vuoi aggiungere nuovi utenti, digita:

> CREATE USER 'username' IDENTIFIED BY 'password';

Dopo aver creato un nuovo utente, puoi entrare in MySQL usando questo comando e verrà visualizzato un messaggio di benvenuto, seguito da un prompt mysql>:

> mysql -u username -p 
Welcome to the MySQL monitor.  Commands end with; or \g.
Your MySQL connection id is 25
Server version: 8.1.0 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Come creare un database MySQL

Creare un database

È il momento di creare il tuo primo database in MySQL. Per questo tutorial, vogliamo creare un database chiamato "datacamp_courses", che conterrà informazioni su alcuni corsi DataCamp. Il database è ospitato in locale.

Per creare un database, usa il comando seguente:

mysql> CREATE DATABASE datacamp_courses;

Per verificare che il database sia stato creato, digita quanto segue e verrà visualizzata una tabella con tutti i database disponibili:

mysql> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| datacamp_courses   |
| mysql              |
+--------------------+
5 rows in set (0,00 sec)

Ora sei pronto per accedere al tuo nuovissimo database.

mysql> USE datacamp_courses;
Database changed

Creare una tabella

Finora hai creato il tuo primo database. Ma è ancora vuoto. Ora andremo a creare la prima tabella del database. Vogliamo creare una tabella chiamata "courses", con informazioni su diversi corsi disponibili nel catalogo corsi di DataCamp.

È il momento di creare la tua prima tabella nel database "datacamp_courses". Vogliamo creare una tabella con informazioni su alcuni dei corsi nel catalogo corsi di DataCamp.

La chiave primaria della tabella deve essere course_id (nota che solo questa è in grassetto) e il suo tipo di dato deve essere un intero. Una chiave primaria è un vincolo che impone che i valori della colonna siano non nulli e unici. Ti permette di identificare in modo univoco una specifica istanza o un insieme di istanze presenti nella tabella.

Le restanti colonne forniscono informazioni sul nome del corso, il docente del corso, l'argomento del corso e l'url.

Per creare la prima tabella del database "datatacamp_courses", usa il comando seguente:

mysql> CREATE TABLE courses (
  course_id int NOT NULL,
  course_name varchar(250) NOT NULL,
  instructor_name varchar(250) NOT NULL,
  technology varchar(50) NOT NULL,
  topic varchar(50) NOT NULL,
  PRIMARY KEY (course_id)
);

Query SQL di base

Hai il tuo primo database e la tua prima tabella. Ottimo! Ora è il momento di aggiungere alcuni dati alla tabella.

Aggiungiamo alcune righe con corsi popolari disponibili nel nostro catalogo con l'istruzione INSERT. Il codice seguente farà la magia.

INSERT INTO 
    courses (course_id, course_name, instructor_name, technology, topic) VALUES 
    (1, 'Introduction to SQL', 'Izzy Weber', 'SQL','Data Manipulation'), 
    (2, 'Database Design', 'Lis Sulmont', 'SQL', 'Data Engineering'), 
    (3, 'Data Manipulation with pandas', 'Richie Cotton', 'R','Programming'),
    (4, 'Generative AI Concepts', 'Daniel Tedesco', 'Theory', 'AI & Machine Learning');

Per verificare che le righe siano state aggiunte correttamente, visualizziamo tutte le righe della tabella con l'istruzione SELECT:

SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name                   | instructor_name | technology | topic                 |
+-----------+-------------------------------+-----------------+------------+-----------------------+
|         1 | Introduction to SQL           | Izzy Weber      | SQL        | Data Manipulation     |
|         2 | Database Design               | Lis Sulmont     | SQL        | Data Engineering      |
|         3 | Data Manipulation with pandas | Richie Cotton   | R          | Programming           |
|         4 | Generative AI Concepts        | Daniel Tedesco  | Theory     | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)

Avrai notato che c'è un errore nei dati appena aggiunti. La tecnologia del corso Data Manipulation with pandas è Python, non R. Correggiamo l'errore con l'istruzione UPDATE insieme alla clausola WHERE per specificare la riga da aggiornare

UPDATE courses SET technology = 'Python' WHERE course_id = 3;
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name                   | instructor_name | technology | topic                 |
+-----------+-------------------------------+-----------------+------------+-----------------------+
|         1 | Introduction to SQL           | Izzy Weber      | SQL        | Data Manipulation     |
|         2 | Database Design               | Lis Sulmont     | SQL        | Data Engineering      |
|         3 | Data Manipulation with pandas | Richie Cotton   | Python     | Programming           |
|         4 | Generative AI Concepts        | Daniel Tedesco  | Theory     | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)

Infine, potresti voler eliminare uno dei record nella tua tabella. Per esempio, eliminiamo il corso Generative AI Concepts:

DELETE from courses WHERE course_name = 'Generative AI Concepts';
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-------------------+
| course_id | course_name                   | instructor_name | technology | topic             |
+-----------+-------------------------------+-----------------+------------+-------------------+
|         1 | Introduction to SQL           | Izzy Weber      | SQL        | Data Manipulation |
|         2 | Database Design               | Lis Sulmont     | SQL        | Data Engineering  |
|         3 | Data Manipulation with pandas | Richie Cotton   | Python     | Programming       |
+-----------+-------------------------------+-----------------+------------+-------------------+
3 rows in set (0,00 sec)

Argomenti avanzati

Indicizzazione

Per impostazione predefinita, quando MySQL deve trovare alcune righe, parte dalla prima e poi legge dalla testa alla coda. Questo comportamento può essere problematico quando i tuoi database hanno milioni di righe, perché il processo può essere molto lento.

Un ottimo modo per velocizzare la ricerca delle righe nelle tue tabelle da parte di MySQL è creare un indice. Un indice è un componente delle tue tabelle che MySQL usa per recuperare più rapidamente le righe con colonne specifiche.

Creiamo un indice nella nostra tabella dei corsi chiamato "idx_course" sulla colonna "course_id".

CREATE INDEX idx_course
ON courses (course_id);

Join

Finora abbiamo lavorato solo con la tabella dei corsi. Ma sfrutti davvero il pieno potenziale dei database relazionali, come MySQL, quando lavori con più tabelle contemporaneamente.

Lo strumento magico per combinare più tabelle è l'operazione JOIN. Immagina di avere una seconda tabella nel nostro database chiamata "instructors" che contiene informazioni di base sui docenti dei corsi DataCamp. Lo script seguente crea la tabella e aggiunge alcune righe (di fantasia):

mysql> CREATE TABLE instructors (
  instructor_id int NOT NULL,
  instructor_name varchar(250) NOT NULL,
  role varchar(500) NOT NULL,
  number_courses int NOT NULL,
  PRIMARY KEY (instructor_id)
);
INSERT INTO 
    instructors (instructor_id, instructor_name, role, number_courses) VALUES 
    (1, 'Lis Sulmont', 'Data Scientist', 4),
    (2, 'Daniel Tedesco', 'Business Analyst', 1),
    (3, 'Richie Cotton', 'Data Evangelist',5),
    (4, 'Izzy Weber', 'Data Engineer', 2), 
    (5, 'James Chapman', 'Data Analyst',3);

Immagina di voler unire le due tabelle per ottenere le informazioni sui corsi, oltre ai dati associati al docente. Useremo un INNER JOIN per ottenere solo le informazioni dei corsi che compaiono nella tabella dei corsi. La colonna comune per effettuare la join è "instructor_name".

mysql> SELECT * FROM courses
    -> INNER JOIN instructors
    -> ON courses.instructor_name = instructors.instructor_name;
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
| course_id | course_name                   | instructor_name | technology | topic             | instructor_id | instructor_name | role            | number_courses |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
|         2 | Database Design               | Lis Sulmont     | SQL        | Data Engineering  |             1 | Lis Sulmont     | Data Scientist  |              4 |
|         3 | Data Manipulation with pandas | Richie Cotton   | Python     | Programming       |             3 | Richie Cotton   | Data Evangelist |              5 |
|         1 | Introduction to SQL           | Izzy Weber      | SQL        | Data Manipulation |             4 | Izzy Weber      | Data Engineer   |              2 |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
3 rows in set (0,00 sec)

Questa è solo una tipologia di join, ma ce ne sono altre altrettanto utili a seconda del caso d'uso. Il nostro corso Joining Data in SQL e il cheat sheet sulle JOIN ti aiuteranno a iniziare.

Best practice per MySQL

Misure di sicurezza

I database moderni possono archiviare tabelle con milioni di righe. Con così tanti dati e applicazioni che li utilizzano, mantenerli sicuri è fondamentale.

I database sono soggetti a rischi comuni, tra cui gestione errata degli accessi al database, password deboli e SQL injection. Per affrontare queste minacce e vulnerabilità, possono essere implementate diverse strategie e misure, tra cui configurare i privilegi di accesso in base all'utente, creare trigger nei server SQL e mettere in atto metodologie di crittografia. Un ottimo punto di partenza per la sicurezza SQL è il nostro corso Database Design.

Ottimizzazione delle prestazioni

Man mano che progredisci nel tuo percorso di scrittura di SQL, inizierai a renderti conto dell'importanza delle prestazioni. Una query SQL può essere scritta in modi diversi. Tutti funzionano, ma alcuni sono più efficienti di altri.

Esistono molte strategie e trucchi che possono aiutarti a migliorare le prestazioni del tuo codice SQL, tra cui sottoquery e clausole SQL come WHERE, HAVING e DISTINCT.

Ma l'efficienza non è solo una questione tecnica; è anche una questione di ordine e leggibilità. Con piccoli accorgimenti nel modo in cui scrivi SQL, come usare alias e commenti, puoi fare una grande differenza che aiuterà te e il resto del tuo team.

Vuoi saperne di più sull'ottimizzazione delle prestazioni in SQL? Dai un'occhiata al nostro corso Improving Query Performance in SQL Server

Conclusione

Congratulazioni per essere arrivato alla fine di questo tutorial su MySQL. Speriamo che ti sia piaciuta questa introduzione a MySQL e alle sue funzionalità. Se ti interessa la gestione dei database, imparare MySQL è una scelta intelligente.

Ma questo è solo l'inizio del tuo percorso. Se vuoi imparare di più su MySQL e su SQL in generale, Datacamp ha quello che fa per te. Ecco alcune risorse per iniziare:


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Sono una data analyst freelance e collaboro con aziende e organizzazioni di tutto il mondo in progetti di data science. Sono anche un'insegnante di data science con oltre 2 anni di esperienza. Scrivo regolarmente articoli su temi legati alla data science in inglese e spagnolo, alcuni dei quali sono stati pubblicati su siti affermati come DataCamp, Towards Data Science e Analytics Vidhya. Come data scientist con un background in scienze politiche e diritto, il mio obiettivo è lavorare all'intersezione tra politiche pubbliche, diritto e tecnologia, sfruttando la forza delle idee per promuovere soluzioni e narrazioni innovative che ci aiutino ad affrontare le sfide urgenti, in primis la crisi climatica. Mi considero autodidatta, una persona in continuo apprendimento e una convinta sostenitrice dell'approccio multidisciplinare. Non è mai troppo tardi per imparare cose nuove.

Argomenti
SQL

Inizia oggi il tuo percorso SQL!

Corso

Introduzione a SQL

2 ore
1.6M
Impara a creare e interrogare i database relazionali utilizzando SQL in sole due ore.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro