UPDATE avec FROM et mises à jour de type JOIN
Mettez à jour des lignes à partir de valeurs provenant d’une autre table avec UPDATE ... FROM (PostgreSQL) et l’instruction standard MERGE.
UPDATE avec FROM et mises à jour de type JOIN est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
UPDATE de base
Modifiez les valeurs des lignes correspondantes :
UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;Plusieurs colonnes
Liste SET séparée par des virgules :
UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;Mettre à jour de nombreuses lignes
Faites simplement correspondre davantage de lignes avec WHERE :
UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';UPDATE avec une sous-requête
Calculez la nouvelle valeur à partir d’une autre requête :
UPDATE products
SET review_count = (
SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);UPDATE … FROM (PostgreSQL)
Mise à jour de type JOIN : récupérez des valeurs dans une autre table :
UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;UPDATE … FROM avec plusieurs tables
La liste FROM peut inclure plusieurs tables :
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 via une sous-requête corrélée
Équivalent portable, mais plus lent :
UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);MERGE pour INSERT/UPDATE/DELETE
PostgreSQL 15+ prend en charge MERGE pour les opérations combinées — consultez la leçon sur UPSERT.
RETURNING avec UPDATE
Récupérez les lignes mises à jour en un seul aller-retour :
UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;UPDATE avec CASE
Nouvelles valeurs conditionnelles :
UPDATE orders
SET status = CASE
WHEN paid_at IS NOT NULL THEN 'paid'
WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
ELSE status
END;Attention à l’absence de WHERE
UPDATE users SET active = false; met à jour TOUTES les lignes. En production :
- Exécutez d’abord un SELECT pour vérifier le nombre de lignes
- Utilisez une transaction et vérifiez le résultat avant COMMIT
- Utilisez
BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;pour faire une simulation
Performances des mises à jour
Un UPDATE crée une nouvelle version de la ligne et marque l’ancienne comme obsolète (MVCC). Les tables fréquemment mises à jour peuvent gonfler — ce point est traité dans la leçon sur VACUUM/MVCC.
Récapitulatif
UPDATE … FROM est la mise à jour de type JOIN qui permet d’effectuer proprement des corrections en masse.
- WHERE est toujours nécessaire — ne l’oubliez jamais
- Utilisez RETURNING pour vérifier
- Testez dans une transaction avec ROLLBACK
Vérification rapide
Quelle syntaxe UPDATE permet de faire référence à une autre table dans PostgreSQL ?
Questions Fréquemment Posées
La leçon « UPDATE avec FROM et mises à jour de type JOIN » est-elle gratuite ?
Oui — le texte complet de « UPDATE avec FROM et mises à jour de type JOIN » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « UPDATE avec FROM et mises à jour de type JOIN » ?
Mettez à jour des lignes à partir de valeurs provenant d’une autre table avec UPDATE ... FROM (PostgreSQL) et l’instruction standard MERGE. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « UPDATE avec FROM et mises à jour de type JOIN » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- INSERT avec plusieurs lignes
- UPSERT : ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE avec FROM et mises à jour de type JOIN
- DELETE avec USING et modèles sûrs