SQL UPDATE – Mise à jour de données en base de données

La commande SQL UPDATE permet de mettre à jour les données d’une table d’une base de données MySQL, PostgreSQL, etc.

Cette commande nous permet donc de modifier les données stockées dans une table en remplaçant d’anciennes données par de nouvelles.

La mise à jour de données dans une base de données est l’une des opérations de base et des plus courantes qu’on va effectuer lors de la manipulation des données des bases de données au même titre que la sélection avec la commande SQL SELECT ou l’insertion avec SQL INSERT.

SQL UPDATE va nous permettre de mettre à jour les données relatives à une ou plusieurs entrées d’un coup dans une base de données. Nous utiliserons souvent cette commande avec WHERE pour ne mettre à jour que les entrées qui correspondent à un certain critère.

 

Syntaxe de la commande SQL UPDATE

La commande SQL UPDATE permet de mettre à jour, c’est-à-dire de modifier les informations contenues dans une table d’une base de données.

Nous allons pouvoir utiliser cette commande pour mettre à jour les valeurs de toutes les entrées pour une ou plusieurs colonnes ou pour ne mettre à jour que les valeurs de certaines entrées répondant à un critère défini par une clause WHERE.

Mettre à jour les valeurs de toutes les entrées pour une ou plusieurs colonnes

Pour commencer, nous allons pouvoir utiliser la commande SQL UPDATE pour mettre à jour les valeurs de toutes les entrées pour une ou plusieurs colonnes.

Dans ce cas, nous utiliserons la syntaxe UPDATE nom_de_table SET nom_colonne = 'nouvelle valeur’ pour mettre à jour les valeurs de toutes les entrées de la table “nom_de_table” pour la colonne “nom_colonne” ou la syntaxe UPDATE nom_de_table SET nom_colonne1 = 'nouvelle valeur 1’, nom_colonne2 = 'nouvelle valeur 2’ pour mettre à jour les valeurs de toutes les entrées pour les colonnes “nom_colonne1” et “nom_colonne2”.

Mettre à jour les valeurs d’une ou de certaines entrées pour une ou plusieurs colonnes avec SQL UPDATE et WHERE

Souvent, nous ne voudrons mettre à jour que les valeurs d’une ou de certaines entrées de notre table répondant à un certain critère. Dans ce cas, nous allons utiliser la commande SQL UPDATE avec une clause WHERE.

Nous allons donc utiliser la syntaxe suivante : UPDATE nom_de_table SET nom_colonne = 'nouvelle valeur’ WHERE condition.

Pour mettre à jour les valeurs d’une seule entrée, par exemple, on pourra se servir de la colonne id de la table si celle-ci en contient une en précisant UPDATE nom_de_table SET nom_colonne = 'nouvelle valeur’ WHERE id = nombre.

 

Exemples d’utilisation de SQL UPDATE

Pour tester la commande SQL UPDATE, nous allons avoir besoin d’une base de données avec une table au moins.

Il existe différentes méthodes créer une base de données et une table. Les deux plus courantes sont l’utilisation de phpMyAdmin ou d’un script PHP avec une extension mysql ou PDO.

Ici, nous allons créer une base MySQL cours contenant une table users. Je vous invite donc à démarrer vos serveurs (en utilisant MAMP, WAMP, etc.) et à aller dans votre phpMyAdmin (accessible depuis la page de démarrage de WAMP, MAMP…).

Créez ensuite la base cours en allant dans l’onglet “base de données” puis dans le champ “créer un base”. Sélectionnez finalement la base en cliquant dessus puis allez dans l’onglet “import” pour importer la table users que je vous ai préparée et que vous pouvez télécharger en cliquant ici.

Cette table users contient 6 colonnes et huit champs comme sur l’image ci-dessous :

Création d'une base SQL et d'une table

Mise à jour de données via phpMyAdmin

Commençons par essayer de modifier les valeurs des entrées de notre table avec phpMyAdmin. Pour cela, commençons par sélectionner notre table “users” dans phpMyAdmin puis par nous rendre dans l’onglet “SQL”.

A partir de là, on va pouvoir par exemple modifier la valeur de la colonne “age” pour toutes les entrées avec la requête UPDATE users SET age = 30 comme ceci :

Requête SQL UPDATE pour mettre à jour toutes les entrées de la table

Résultat de requête SQL pour mettre à jour toutes les entrées de la table

On va également pouvoir mettre à jour des valeurs uniquement pour certaines entrées avec une clause WHERE. On peut par exemple changer la valeur de la colonne “prenom” pour l’entrée qui possède l’id = 1 en écrivant :

Requête SQL UPDATE WHERE pour mettre à jour une entrée de la table

Résultat de la requête SQL UPDATE WHERE pour mettre à jour une entrée de la table

On va également pouvoir mettre à jour les valeurs de plusieurs colonnes d’un coup pour une, certaines ou pour toutes les entrées de notre table. Pour cela, il suffit de séparer les colonnes par une virgule. La syntaxe est alors la suivante :

Requête SQL UPDATE pour mettre à jour les données de plusieurs colonnes

Résultat de requête SQL UPDATE pour mettre à jour les données de plusieurs colonnes

Mise à jour de données avec PHP et l’extension PDO

Bien souvent, nous voudrons mettre à jour les données en base de données de façon dynamique. On peut par exemple laisser la possibilité aux gens inscrits sur notre site de modifier leurs données personnelles. Pour réaliser cela, nous n’allons pas pouvoir passer par phpMyAdmin mais devrons plutôt utiliser un langage de script serveur comme le PHP.

Pour communiquer avec les bases de données, nous allons pouvoir utiliser l’une des deux extensions PHP mysql ou PDO. Dans ce tutoriel, j’utiliserai PDO.

Commençons par créer un fichier update.php. Ce fichier va contenir le code PHP pour se connecter à la base de données cours et pour mettre à jour les données dans notre table users.

Pour mettre à jour les données, nous allons ici utiliser les requêtes préparées et donc les fonctions prepare() er execute().

Nous allons également ici utiliser la fonction bindParam() avec des marqueurs nommés comme ceci :

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP / MySQL</title>
        <meta charset='utf-8'>
    </head>
    <body>
        <h1>Bases de données MySQL</h1>  
        <?php
            $servname = "localhost"; $dbname = "cours"; $user = "root"; $pass = "root";
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $age = 31;

                $req = $dbco->prepare("UPDATE users SET age = :age");
                $req->bindParam(':age', $age, PDO::PARAM_INT);
                $req->execute();

                echo 'Données mises à jour';
            }
                  
            catch(PDOException $e){
                echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

Ce script permet d’établir une connexion avec notre base de données MySQL et de mettre à jour les valeurs de la colonne “age” pour toutes les entrées de la table.

On utilise ici un marqueur nommé :age dans notre requête puis on relie ce paramètre à une variable $age. On passe également un drapeau PDO::PARAM_INT pour signifier qu’on attend un entier en valeur.

Mise à jour de données en base avec UPDATE en SQL via PDO PHP

 

Mise en garde sur l’utilisation de la commande SQL UPDATE

Il convient de toujours faire bien attention lorsqu’on manipule les données d’une base de données car la plupart des manipulations sont permanentes et donc non réversibles.

En particulier, lorsqu’on utilise une commande SQL UPDATE, il faut porter une attention particulière à la clause WHERE qui l’accompagne souvent. Si on omet cette clause WHERE, toutes les entrées de la table seront mises à jour, ce qui n’est généralement pas le comportement voulu.

Laisser un commentaire