# MariaDB UPDATE: aggiornare i record in una tabella

Con il comando UPDATE di MariaDB puoi modificare i dati già esistenti in una tabella. In questo modo garantisci che le informazioni nel database siano sempre coerenti e aggiornate.

## A cosa serve il comando `UPDATE` in MariaDB?

Il comando `UPDATE` in [MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/) **modifica i valori** di una o più colonne di una tabella. A differenza dei comandi `INSERT` o `DELETE`, `UPDATE` non crea nuove righe né elimina quelle esistenti: modifica esclusivamente i dati già presenti. È quindi la soluzione ideale in tutti i casi in cui le informazioni cambiano nel tempo, ma la struttura del database rimane invariata.

Nelle applicazioni che usano un database, `UPDATE` viene spesso eseguito in background, ad esempio per aggiornare i profili utente o gestire l’avanzamento di transazioni. Tra gli utilizzi tipici ci sono la correzione di errori di inserimento, l’aggiornamento delle giacenze di magazzino e la modifica degli stati degli ordini. È fondamentale specificare con precisione quali colonne vanno aggiornate, altrimenti il comando potrebbe agire su tutta la tabella. Per questo motivo, **definire correttamente i filtri** nel comando `UPDATE` è una prassi essenziale per mantenere il controllo sui dati.

## Sintassi del comando `UPDATE`

La sintassi base di `UPDATE` in MariaDB prevede tre elementi: il nome della tabella, la clausola `SET` con i campi da modificare e una clausola `WHERE` opzionale per selezionare le righe interessate.

```sql
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
```

## Parametri e argomenti del comando `UPDATE`

Il comando `UPDATE` in MariaDB accetta diversi **parametri** che consentono di controllare con precisione quali dati devono essere modificati e in quale forma. Tra gli elementi più importanti figurano il nome della tabella, `SET`, `WHERE`, `ORDER BY` e `LIMIT`.

- `table_name`: nome della tabella in cui desideri modificare i dati.
- `SET`: definisce una o più colonne che riceveranno nuovi valori. È anche possibile utilizzare funzioni o operazioni aritmetiche, ad esempio `SET views = views + 1`.
- `WHERE`: filtra le righe interessate in base a una condizione. Senza `WHERE`, MariaDB modifica tutte le righe della tabella.
- `ORDER BY`: ordina le righe prima dell’aggiornamento. Ciò è particolarmente utile quando si utilizza `LIMIT`.
- `LIMIT`: limita il numero di righe modificate, ad esempio alle prime cinque corrispondenze.
- Clausole `JOIN`: in scenari più complessi, è possibile combinare `UPDATE` con il comando `JOIN` per elaborare dati provenienti da più tabelle. Questa variante consente di apportare modifiche condizionate in base al contenuto delle tabelle collegate.
- `SUBSELECT` o sottoquery: è possibile utilizzare sottoquery nella clausola `SET` o `WHERE` per acquisire valori dinamici da altre tabelle.
- Funzioni e operatori: all’interno di `SET` è possibile utilizzare funzioni, operazioni aritmetiche, condizioni (`IF()`) o concatenazioni (`CONCAT()`) per generare contenuti in modo dinamico.

## Esempi di utilizzo di `UPDATE` in MariaDB

Il comando `UPDATE` si applica a molti scenari reali: puoi correggere dati errati, aggiornare informazioni che cambiano nel tempo o applicare regole automatiche basate sullo stato di un processo. Di seguito ti mostriamo alcuni esempi pratici.

### Aggiornare un singolo valore

La clausola `WHERE` assicura che venga interessato solo un determinato record. In questo esempio modifichiamo l’indirizzo e-mail del cliente con ID “42”.

```sql
UPDATE customers
SET email = 'new.email@example.com'
WHERE customer_id = 42;
```

### Modificare più colonne contemporaneamente

In questo caso aggiorniamo sia il prezzo (`price`) che la disponibilità in magazzino. Il valore `stock` viene ridotto di 1, ad esempio dopo una vendita.

```sql
UPDATE products
SET price = 19.99, stock = stock - 1
WHERE product_id = 1001;
```

### Aggiornare i valori per più righe

Questa query cambia lo stato di tutti gli ordini in “shipped” se è presente una data di spedizione e lo stato attuale è ancora “processing”.

```sql
UPDATE orders
SET status = 'shipped'
WHERE shipping_date IS NOT NULL AND status = 'processing';
```

### Modificare solo un determinato numero di righe

In questo esempio disattiviamo i 100 utenti con i login più vecchi. `ORDER BY` e `LIMIT` permettono di controllare l’ordine e la quantità di righe modificate.

```sql
UPDATE users
SET active = 0
ORDER BY last_login ASC
LIMIT 100;
```

### Utilizzare `UPDATE` di MariaDB con condizione `IF()`

La funzione `IF()` permette di applicare logiche condizionali direttamente nella clausola `SET`. Nell’esempio seguente, MariaDB controlla il prezzo di ogni prodotto: se è superiore a 100, applica uno sconto del 15%, altrimenti del 5%.

```sql
UPDATE products
SET discount = IF(price > 100, 0.15, 0.05);
```


This is a markdown version of: [https://www.ionos.it/digitalguide/hosting/tecniche-hosting/mariadb-update/](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/mariadb-update/) for AI/LLM consumption.