SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite - Supprimer des données

Le DELETE peut être utilisée pour supprimer des données dans une table.

Le WHERE La clause peut être utilisée pour spécifier exactement quelles lignes doivent être supprimées.

Vous pouvez supprimer toutes les lignes, certaines lignes ou aucune, selon les conditions de filtrage appliquées par WHERE clause.

Une simple suppression

Trouvons d'abord un artiste à supprimer :

sqlite> SELECT * FROM Artistes;ArtistId ArtistName Bio -------- -------------------- --------- -------------------------------1 Joe Satriani 2 Steve Vai 3 Le Tea Party 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere Groupe de jazz australien centré autour du poly9 Ian Moss 10 Magnum 11 Strapping Young Lad 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambale 16 Mothers of Invention 17 The Wiggles 

OK, supprimons le numéro d'artiste 12 (Tueur).

Voici la simple instruction de suppression qui supprime cet enregistrement des Artistes tableau :

SUPPRIMER DES Artistes WHERE IdArtiste =12 ;

Ainsi, après avoir exécuté cela, nous pouvons vérifier que l'enregistrement a bien été supprimé avec un SELECT déclaration :

sqlite> SELECT * FROM Artistes WHERE ArtistId =12;sqlite> 

(Aucun résultat).

Suppression de données avec une contrainte de clé étrangère

Si vous tentez de supprimer un enregistrement référencé par une clé étrangère, vous devriez obtenir une erreur. Vous devrez d'abord supprimer les enregistrements de clé étrangère, avant de supprimer l'enregistrement de clé primaire.

Par exemple, l'identifiant d'artiste 17 (des Artistes table) se trouve être référencé par deux enregistrements dans les Albums tableau (voir le ArtistId colonne):

sqlite> SELECT * FROM Albums WHERE ArtistId =17;AlbumId AlbumName ReleaseDate ArtistId -------- -------------------- ---- -------- ------------5 Miam Miam 1994 17 13 Grosse Voiture Rouge 1995 17 

Donc, si nous essayons de supprimer l'artiste 17 de la table Artists (qui contient la clé primaire), nous devrions obtenir une erreur.

Voici la déclaration de suppression :

SUPPRIMER DES Artistes WHERE IdArtiste =17 ;

Et voici le résultat :

sqlite> DELETE FROM Artistes ...> WHERE ArtistId =17;Erreur :Échec de la contrainte FOREIGN KEY sqlite> 

Nous devons donc supprimer les enregistrements de clé étrangère avant de supprimer la clé primaire.

Si vous n'avez pas obtenu une contrainte FOREIGN KEY a échoué message, vous devrez peut-être activer la vérification des contraintes de clé étrangère. Exécutez PRAGMA foreign_keys = ON; pour activer les vérifications des contraintes de clé étrangère.

Supprimer les enregistrements associés

Alors supprimons les enregistrements associés dans les Albums table, avant de réessayer l'instruction de suppression ci-dessus.

SUPPRIMER DES Albums WHERE IdArtiste =17 ;

Vérifiez qu'ils ont bien été supprimés :

sqlite> SELECT * FROM Albums WHERE ArtistId =17;sqlite> 

(Aucun résultat).

Essayons maintenant à nouveau l'instruction de suppression d'origine :

SUPPRIMER DES Artistes WHERE IdArtiste =17 ;

Semble prometteur — pas d'erreur :

sqlite> DELETE FROM Artistes ...> WHERE ArtistId =17;sqlite> 

Et un SELECT déclaration confirme la suppression :

sqlite> SELECT * FROM Artistes WHERE ArtistId =17;sqlite> 

Aucun résultat.

Supprimer toutes les lignes

Vous pouvez supprimer toutes les lignes d'un tableau en omettant le WHERE clause.

Nous avons une table de rechange ( Albums1 ), alors essayons sur celui-là.

Tout d'abord, vérifions simplement qu'il contient bien des données :

sqlite> SELECT * FROM Albums1;AlbumId AlbumName Year ArtistId -------- -------------------- -------- ---- ------------1 Killers 1981 7 2 Powerslave 1984 7 3 Surfing with the Ali 1987 1 4 Heavy as a Really He 1995 11 5 Yummy Yummy 1994 17 6 ​​Out of the Loop 2007 1989 

Cela fait. Alors allons-y et supprimons tout :

SUPPRIMER DES Albums1 ;

Vérifions à nouveau son contenu :

sqlite> SELECT * FROM Albums1;sqlite> 

(Aucun résultat).