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 1989Cela fait. Alors allons-y et supprimons tout :
SUPPRIMER DES Albums1 ;Vérifions à nouveau son contenu :
sqlite> SELECT * FROM Albums1;sqlite>(Aucun résultat).