Modifier des données stockées dans une base de données est nécessaire afin de rectifier les informations et ainsi détenir des bases fiables. La commande SQL UPDATE est celle qui permet d’effectuer cela sur un système de gestion de base de données relationnel.

Dans cet article, nous allons découvrir les différentes modes d’utilisation de cette commande.

SQL UPDATE : définition

La commande UPDATE est utilisée en SQL pour apporter une modification aux données existantes. Elle est souvent associée à la clause WHERE afin de préciser la ou les lignes à modifier.

SQL UPDATE : syntaxe

Il existe trois types syntaxes pour l’instruction UPDATE :

Première syntaxe

Il s’agit de la syntaxe de base qui est :

UPDATE table
SET nom_colonne = 'nouvelle valeur'
WHERE condition

Les lignes de code ci-dessous permettent d’attribuer une nouvelle valeur aux lignes de la colonne nom_colonne qui respecte la condition spécifiée par WHERE. En cas d’absence de la condition devant WHERE, la nouvelle valeur est attribuée à toutes les lignes de la colonne nom_colonne

Pour attribuer plusieurs valeurs à plusieurs colonnes en même temps, la syntaxe est la suivante : 

UPDATE table
SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'
WHERE condition

Par exemple, considérons la table suivante :

table_client_update

Avec la requête ci-dessous, certaines informations du client Pierre seront modifiées :

UPDATE client
SET rue = '49 Rue Ameline',
  ville = 'Saint-Eustache',
  code = '98210'
WHERE id = 2
select_update

Deuxième syntaxe

On peut également modifier les données d’une table avec les données d’une autre table. Pour ce faire, la syntaxe est la suivante : 

UPDATE table1
SET nom_colonne = (SELECT expression1
               FROM table2
               WHERE conditions)
[WHERE conditions];

Troisième syntaxe

Cette syntaxe effectue la même action que la deuxième :

UPDATE table1
SET table1.nom_colonne = table2.expression1
FROM table1
INNER JOIN table2
ON (table1.nom_colonne = table2.nom_colonne)
[WHERE conditions];

Modifier toutes les lignes de la colonne

Il est possible de mettre à jour toutes les lignes de la table avec une seule requête. Pour cela, il suffit juste d’omettre la clause WHERE.

En considérant toujours la table précédente, on va changer la valeur de chaque ligne de la colonne pays en utilisant les lignes de codes suivants : 

UPDATE client
SET pays = 'TCHAD'
sql_update_set

Et si l’on affiche la table, nous allons voir que toute la colonne a bien été mise à jour.

select_table_client

Mettre à jour une table avec les données d’une autre table

Modifier des données d’une table avec celles d’une autre table permet entre autres d’uniformiser une base de données.

Pour bien comprendre cette partie, regardons les lignes de code suivant qui remplace les données d’une table avec les données d’une autre table.

UPDATE agent
SET nom = (SELECT nom
                 FROM contacts
                 WHERE contacts.prenom = agent.prenom)
WHERE agent_id > 95;

Après l’exécution, toutes les lignes de la colonne agent dont leurs id sont supérieurs à 95 seront mises à jour. Maintenant, s’il y a correspondance de prénom dans les tables contact et agent, il copiera le prénom de la table contact dans le champ nom de la table agent.

Nous pouvons aussi écrire cette même instruction de la manière suivante et cela donne le même résultat :

UPDATE agent
SET agent.nom = contacts.nom
FROM agent
INNER JOIN contacts
ON (agent.nom = contacts.nom)
WHERE agent_id > 95;

Syntaxe SQL UPDATE avec sous-requêtes et instruction JOIN

On peut également associer plusieurs clauses ou ajouter des sous-requêtes avec la clause SQL UPDATE.

Considérons par exemple une table sales et imaginons que nous avons ajouté une colonne nommée POC (Point de Contact) à cette table. Grâce à cette colonne, il est possible d’ajouter un nom POC pour les entreprises qui ont le meilleur service de vente.

Dans la table sales, il y a la colonne PersonID qui répertorie tous les identifiants des personnels ayant vendu un produit. Maintenant, il faut ajouter le nom de l’identifiant de cette personne à la nouvelle colonne nommée POC. Cela veut dire que l’on va récupérer les données dans la table employee qu’on ajoutera à une autre table nommée sales.

UPDATE Sales
SET POC = (SELECT name from employee WHERE employee.ID = sales.PersonID)
sql_update_join
Source : www.sqlshack.com

On peut écrire le code précédent d’une autre manière avec l’instruction JOIN :

UPDATE Sales
SET sales.City = employee.City
FROM Sales
JOIN Employee
ON employee.ID = sales.PersonID
sql_update_join2

SQL UPDATE avec la fonction date-heure

La fonction date-heure est utilisable avec la fonction UPDATE. Supposons que l’on souhaite mettre à jour la date et l’heure d’une colonne. Nous pouvons pour cela utiliser la fonction GETDATE afin de récupérer l’heure actuelle et la mettre dans la colonne souhaitée.

Considérons la table commande suivante :

table_commande

Dans cette table, nous allons mettre à jour la colonne date_achat avec la date et heure actuelle du système :

UPDATE commande
SET date_achat = GETDATE()
sql_update_getdate

En résumé, quand on crée des bases de données et qu’on ajoute des données, il arrive toujours un moment où l’on est amené à modifier ou à mettre à jour certaines données. SQL UPDATE est une instruction de mise à jour des données que vous pouvez maintenant utiliser efficacement après la lecture de cet article.

Si vous souhaitez connaître d’autres fonctionnalités SQL, vous pouvez vous rendre sur notre blog où figurent d’autres articles sur ce sujet. Nous vous invitons également à télécharger cette formation sur Spark avec Scala si vous souhaitez en apprendre davantage sur le Big Data.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>