Supprimer des données, une table ou une base de données MySQL

Dans cette nouvelle leçon, nous allons apprendre à supprimer des données précises d’une table ou toutes les données d’une table ou encore à supprimer complètement une table ou une base de données.

De manière pratique, il est essentiel de savoir comment supprimer d’une table, au cas où un utilisateur voudrait faire jouer son droit à l’effacement de ses données personnelles par exemple.

Il nous arrivera cependant beaucoup moins souvent d’avoir à supprimer une table ou une base de données. Il est toutefois bon de savoir le faire dans le cas d’une refonte d’un site entre autres.

 

Supprimer des données d’une table

Supprimer une ou plusieurs entrées choisies d’une table

Pour supprimer des données d’une table, nous allons utiliser l’instruction SQL DELETE FROM.

Pour préciser quelles entrées doivent être supprimées, nous allons accompagner DELETE FROM d’une clause WHERE nous permettant de cibler des données en particulier dans notre table.

Pour tester cette instruction, nous allons utiliser la table « Users » créée précédemment (table contenant 4 colonnes et 3 entrées).

En pratique, pour supprimer une entrée en particulier, nous utiliserons la clause WHERE sur une colonne « id » en ciblant un « id » précis.

Nous pouvons également supprimer plusieurs entrées en donnant une inégalité en condition de la clause WHERE (cibler tous les « id » supérieurs à 5 par exemple) ou en ciblant un autre type de données (supprimer toutes les entrées dont la valeur dans la colonne « Prenom » est « Pierre » par exemple).

Ici, nous allons vouloir supprimer tous les utilisateurs dont le nom est « Giraud ».

<!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 = "pdodb"; $user = "root"; $pass = "root";
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "DELETE FROM Users WHERE nom='Giraud'";
                $sth = $dbco->prepare($sql);
                $sth->execute();
                
                $count = $sth->rowCount();
                print('Effacement de ' .$count. ' entrées.');
            }
                  
            catch(PDOException $e){
                echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

On supprime des entrées dans notre table MySQL en PDO PHP avec delete from

On peut aller vérifier dans phpMyAdmin que notre entrée a bien été effacée :

La requête SQL delete from nous permet de supprimer des données dans une table

Supprimer toutes les données d’une table

Pour supprimer toutes les données d’une table sans pour autant supprimer la table ni sa structure, c’est très simple, il suffit d’utiliser l’instruction SQL DELETE FROM sans préciser de clause WHERE.

Essayons par exemple d’effacer toutes les données de la table « Users » d’un coup.

<!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 = "pdodb"; $user = "root"; $pass = "root";
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "DELETE FROM Users";
                $sth = $dbco->prepare($sql);
                $sth->execute();
                
                $count = $sth->rowCount();
                print('Effacement de ' .$count. ' entrées.');
            }
                  
            catch(PDOException $e){
                echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

On supprime toutes les données d'une table en PDO PHP avec delete from

On peut utiliser la requete SQL delete from pour supprimer toutes les données d'une table

Attention lorsque vous effacez des données : n’oubliez pas que cette action est irréversible. Réfléchissez donc bien avant d’exécuter ce genre d’action et faites un backup de votre base de données.

 

Supprimer complètement une table de la base de données

Pour supprimer complètement une table, nous allons cette fois-ci utiliser l’instruction SQL DROP TABLE suivie du nom de la table que l’on souhaite supprimer.
Essayons par exemple de supprimer complètement notre table « Users ». Pas besoin d’utiliser de requête préparée ici car la suppression de tables ne sera jamais (ou ne devrait jamais être du moins !) à l’initiative de vos utilisateurs.

<!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 = "pdodb"; $user = "root"; $pass = "root";
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "DROP TABLE Users";
                $dbco->exec($sql);
                
                echo 'Table bien supprimée';
            }
                  
            catch(PDOException $e){
                echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

On supprime une table MySQL entière en PDO PHP avec drop table

La requete SQL drop table nous permet de supprimer une table

Une nouvelle fois, faites bien attention avant d’effectuer ce genre d’opération : supprimer une table supprimera toutes les données qu’elle contient et cette action est irréversible. Pensez donc bien toujours à sauvegarder les données avant si vous pensez en avoir besoin un jour.

 

Supprimer complètement une base de données

Pour supprimer une base de données, nous utiliserons l’instruction SQL DROP DATABASE suivie du nom de la base de données que l’on souhaite supprimer.

Une nouvelle fois, faites bien attention avant d’exécuter ce genre d’opération : supprimer une base de données supprimera de manière irréversible toutes les données qu’elle contient.

Il est temps de dire adieu à notre base de données « pdodb » !

<!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 = "pdodb"; $user = "root"; $pass = "root";
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "DROP DATABASE pdodb";
                $dbco->exec($sql);
                
                echo 'Base de données bien supprimée';
            }
                  
            catch(PDOException $e){
                echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

On supprime une base de données MySQL entière en PDO PHP avec drop database

La requete SQL drop database nous permet de supprimer une base de données

Vous pouvez aller vérifier dans phpMyAdmin, notre base de données n’existe plus.

Laisser un commentaire