MySQL da Riga di Comando — Tutorial 4: Modifica e Cancellazione Dati (UPDATE e DELETE)

Tutorial mysql da riga di comando by Antonio Parisi
Nel quarto tutorial della serie dedicata a MySQL da riga di comando, affrontiamo la gestione del ciclo di vita dei dati. Dopo aver visto come inserire ii dati ed interrogare i record con le Query, impareremo a modificarli in modo mirato con UPDATE e a rimuoverli in sicurezza con DELETE, prestando particolare attenzione ai vincoli di integrità e alla clausola WHERE
.

1. Modificare i Dati Esistenti con UPDATE

L’istruzione UPDATE consente di aggiornare i valori di una o più colonne nei record già presenti nel database.
Per modificare l’indirizzo email del cliente con id_cliente = 1:

SQL

UPDATE clienti 
SET email = 'mario.rossi.aggiornato@esempio.com' 
WHERE id_cliente = 1;

Output previsto

Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
Verifichiamo la modifica effettuata:

SQL

SELECT id_cliente, nome, email FROM clienti WHERE id_cliente = 1;

Output previsto

+------------+-------+------------------------------------+
| id_cliente | nome  | email                              |
+------------+-------+------------------------------------+
|          1 | Mario | mario.rossi.aggiornato@esempio.com |
+------------+-------+------------------------------------+
1 row in set (0.00 sec)

2. Modifica Multipla di Record e Operazioni Calcolate

È possibile aggiornare più colonne contemporaneamente o applicare calcoli matematici sui valori correnti.
Eseguiamo uno sconto del 10% su tutti gli ordini che superano i 100 euro di spesa:

SQL

UPDATE ordini 
SET importo_totale = importo_totale * 0.90 
WHERE importo_totale > 100.00;

Output previsto

Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

3. Cancellare Record Specifici con DELETE

L’istruzione DELETE FROM rimuove in modo permanente una o più righe da una tabella.
Cancelliamo l’ordine con id_ordine = 4:

SQL

DELETE FROM ordini WHERE id_ordine = 4;

Output previsto

Query OK, 1 row affected (0.01 sec)
Verifichiamo la tabella ordini aggiornata:

SQL

SELECT * FROM ordini;

Output previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         1 |          1 | 2026-08-06 10:05:00 |         134.99 |
|         2 |          1 | 2026-08-06 10:05:00 |          49.50 |
|         3 |          2 | 2026-08-06 10:05:00 |         269.10 |
+-----------+------------+---------------------+----------------+
3 rows in set (0.00 sec)

4. Verificare l’Effetto del Vincolo ON DELETE CASCADE

Nel Tutorial 2 abbiamo imposto il vincolo ON DELETE CASCADE sulla chiave esterna della tabella ordini. Questo significa che se eliminiamo un cliente, MySQL cancellerà automaticamente tutti gli ordini collegati a quel cliente.
Eliminiamo il cliente Giuseppe Verdi (id_cliente = 2):

SQL

DELETE FROM clienti WHERE id_cliente = 2;

Output previsto

Query OK, 1 row affected (0.01 sec)
Controlliamo il contenuto della tabella ordini:

SQL

SELECT * FROM ordini;

Output previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         1 |          1 | 2026-08-06 10:05:00 |         134.99 |
|         2 |          1 | 2026-08-06 10:05:00 |          49.50 |
+-----------+------------+---------------------+----------------+
2 rows in set (0.00 sec)
L’ordine numero 3 (associato a id_cliente = 2) è stato rimosso in automatico, mantenendo l’integrità del database ed evitando dati orfani.

5. Suggerimento Pratico per la Riga di Comando

ATTENZIONE: Eseguire un UPDATE o un DELETE dimenticando la clausola WHERE applicherà la modifica o la cancellazione a tutti i record della tabella senza possibilità di annullamento.
Prima di eseguire un’operazione distruttiva, trasforma temporaneamente la query in una SELECT per essere certo di quali righe andrai a modificare:

SQL

-- 1. Esegui prima questo controllo:
SELECT * FROM clienti WHERE cognome = 'Neri';

-- 2. Solo dopo aver verificato i risultati, procedi con l'eliminazione:
DELETE FROM clienti WHERE cognome = 'Neri';

Nel prossimo Tutorial 5 esploreremo le funzioni di aggregazione come COUNT, SUM, AVG e la clausola GROUP BY.
Antonio Parisi

Antonio Parisi

Cloud Solution Architect



Torna in alto