UPDATE
L'ordre update en SQL
La commande update permet de mettre à jour les données dans une table.
Mettre à jour par une valeur fixe
UPDATE table
SET colonne1 = valeur1 , colonne2=valeur2
WHERE condition
Mettre à jour par une opération
UPDATE table
SET colonne1 = colonne1+10 , colonne2=colonne1*1.50 , ...
WHERE condition
Mettre à jour une table à partir d'une (ou plusieurs) autre(s)
Par défaut, la commande update permet de mettre à jour une table à partir de valeurs fixes (définies) ou d'une opération sur la même table. Mais il peut parfois être utile de mettre à jour des données à partir d'une autre table (recopie partielle de données, etc.).
Pour cela, la syntaxe diffère quelque peu.
Postgresql
Sous Postgresql, la méthode est propre et efficace :
UPDATE table1
SET champ2 = table2.champ2
FROM table2
WHERE
table2.champ3 = condition1
and table2.champ4 = condition2
[...]
and table1.champ1 = table2.champ1
[...]
Oracle
UPDATE table1
SET champ2 =(select champ2
FROM table2
WHERE
table2.champ3 = condition1
[...]
and table1.champ1 = table2.champ1
[...])
Sous Oracle, la méthode est moins propre car la requête est imbriquée. De plus, elle est moins performante, surtout si la sous-requête est lente et que le nombre de lignes à mettre à jour est important. Dans ce cas, il faut créer une table intermédiaire ou temporaire qui contient le résultat de la sous-requête puis effectuer le update à partir de cette table.