0Pricing
SQL Academy · Lezione

UPDATE con FROM e aggiornamenti in stile JOIN

Aggiorni le righe usando valori di un’altra tabella con UPDATE ... FROM (PostgreSQL) e l’istruzione standard MERGE

UPDATE con FROM e aggiornamenti in stile JOIN è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

UPDATE di base

Modificare i valori nelle righe corrispondenti:

UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;

Più colonne

Elenco SET separato da virgole:

UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;

Aggiornare molte righe

È sufficiente selezionare più righe con WHERE:

UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';

UPDATE con subquery

Calcolare il nuovo valore a partire da un'altra query:

UPDATE products
SET review_count = (
  SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);

UPDATE … FROM (PostgreSQL)

Aggiornamento in stile JOIN: recuperare i valori da un'altra tabella:

UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;

UPDATE … FROM con più tabelle

L'elenco FROM può includere diverse tabelle:

UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;

SQL standard: UPDATE … FROM tramite subquery correlata

Equivalente portabile (più lento):

UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);

MERGE per INSERT/UPDATE/DELETE

PostgreSQL 15+ supporta MERGE per combinare queste operazioni: consultare la lezione su UPSERT.

RETURNING da UPDATE

Ottenere le righe aggiornate in un solo round-trip:

UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;

Aggiornare con CASE

Nuovi valori condizionali:

UPDATE orders
SET status = CASE
  WHEN paid_at IS NOT NULL THEN 'paid'
  WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
  ELSE status
END;

Attenzione a WHERE mancante

UPDATE users SET active = false; aggiorna OGNI riga. In produzione:

  • Eseguire prima un SELECT per verificare il numero di righe
  • Racchiudere l'operazione in una transazione e controllare il risultato prima di COMMIT
  • Usare BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK; come simulazione

Prestazioni degli aggiornamenti

Un UPDATE crea una nuova versione della riga e contrassegna quella precedente come non più valida (MVCC). Le tabelle soggette ad aggiornamenti frequenti possono subire bloat; l'argomento è trattato nella lezione su VACUUM/MVCC.

Riepilogo

UPDATE … FROM è l'aggiornamento in stile JOIN che rende semplici le correzioni massicce.

  • WHERE sempre: non dimenticarlo mai
  • Usare RETURNING per verificare il risultato
  • Eseguire i test in una transazione con ROLLBACK

Verifica rapida

Quale sintassi di UPDATE consente di fare riferimento a un'altra tabella in PostgreSQL?

Domande Frequenti

La lezione «UPDATE con FROM e aggiornamenti in stile JOIN» è gratuita?

Sì — il testo completo di «UPDATE con FROM e aggiornamenti in stile JOIN» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «UPDATE con FROM e aggiornamenti in stile JOIN»?

Aggiorni le righe usando valori di un’altra tabella con UPDATE ... FROM (PostgreSQL) e l’istruzione standard MERGE Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «UPDATE con FROM e aggiornamenti in stile JOIN»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. INSERT con più righe
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE con FROM e aggiornamenti in stile JOIN
  4. DELETE con USING e pattern sicuri
← Torna a SQL Academy