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 :
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
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'
Et si l’on affiche la table, nous allons voir que toute la colonne a bien été mise à jour.
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)
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 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 :
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()
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.