SQL, comment mettre à jour des données dans une table ?

Comment mettre à jour des données dans une table en SQL ?

Pour mettre à jour les données contenues dans une table en SQL, il faut utiliser la fonction UPDATE. Elle se construit de la façon suivante : 

Mise à jour d’une seule colonne d’une table

UPDATE ma_table SET ma_colonne_a_mettre_a_jour = ma_nouvelle_donne;

Exemple 1 : On souhaite mettre toutes les lignes d’une colonne salaire égales à 0 dans la table salaries. On va écrire la requête suivante :

UPDATE salaries SET salaire = 0;

Dans cet exemple, toutes les lignes de la table, de la colonne salaire, seront mises à 0.

Exemple 2 : On souhaite ajouter 200 euros à tous les salariés qui ont plus de 3 ans d’ancienneté. L’ancienneté dans notre exemple est exprimée en nombre d’années. On va écrire la requête suivante :

UPDATE salaries SET salaire = (salaire+200);
WHERE anciennete > 3; 

Dans cet exemple, les lignes de la table, de la colonne salaire, seront mises à jour à condition que l’ancienneté du salarié soit supérieure à 3 ans. Les autres lignes ne seront pas affectées.

Mise à jour de plusieurs colonnes d’une table

Pour mettre à jour plusieurs colonnes en SQL on procède de cette façon :

UPDATE ma_table SET colonne_1 = valeur_1, colonne_2 = valeur_2, colonne_3 = valeur_3;

Attention ! La requête ci-dessus affectera toutes les lignes des colonnes concernées par la mise à jour.

Mise à jour d’une colonne d’une table à partir d’une seconde table

On considère que l’on a 2 tables :

Une table 1 qui contient les données sur les nouveaux salaires des employés

Une table 2 qui contient les données sur les anciens salaires des employés

On veut mettre à jour les anciens salaires de la table 2 à partir de la table 1. La requête va s’écrire :

UPDATE table_2 SET ancien_salaire = ( 
SELECT nouveau_salaire
FROM table_1
WHERE table_2.employe = table_1.employe
GROUP BY nouveau_salaire);

Mise à jour de plusieurs colonnes d’une table à partir d’une seconde table

Pour mettre à jour plusieurs colonnes d’une table 1 à partir des données des colonnes d’une table 2, la requête s’écrit : 

UPDATE table_1 SET (table_1.colonne_1, table_1.colonne_2) = (
SELECT table_2.colonne_1, table_2.colonne_2
FROM table_2
GROUP BY table_2.colonne_1, table_2.colonne_2);

Dans cet exemple, si les noms des colonnes sont identiques dans les 2 tables, il faut les faire précéder par des alias.