
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 unUPDATEo unDELETEdimenticando la clausolaWHEREapplicherà 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.