Sql:DROP
| Fiche express | |
|---|---|
| Type | Commande SQL standard |
| Catégorie | DDL (Data Definition Language) |
| Objets concernés | DATABASE, EVENT, FUNCTION, INDEX, PROCEDURE, TABLE, TRIGGER, USER, VIEW |
| Voir aussi | Sql · Sql:CREATE · Sql:DELETE |
DROP est la commande SQL de suppression définitive et irréversible d'un objet — base
de données, table, index, utilisateur… Contrairement à Sql:DELETE qui supprime des
lignes à l'intérieur d'une table, DROP supprime l'objet lui-même (structure et données).
Pas de ROLLBACK possible après un DROP sur la plupart des moteurs (opération
DDL, commit implicite) — à utiliser avec précaution en production.
Syntaxe
DROP {DATABASE | EVENT | FUNCTION | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW}
[IF EXISTS] nom_objet [, nom_objet2 ...] [CASCADE | RESTRICT];
IF EXISTS évite une erreur si l'objet n'existe pas (utile dans un script
idempotent). CASCADE (selon moteur) supprime aussi les objets dépendants
(contraintes de clé étrangère, vues basées sur la table…).
Exemples
-- Supprimer une base de données
DROP DATABASE IF EXISTS nom_base;
-- Supprimer une table
DROP TABLE IF EXISTS nom_table;
-- Supprimer plusieurs tables en une commande
DROP TABLE IF EXISTS table1, table2, table3;
-- Supprimer un index
DROP INDEX idx_email ON utilisateurs;
-- Supprimer un utilisateur
DROP USER 'nom_utilisateur'@'localhost';
Vider toutes les tables d'une base en boucle depuis le shell (MySQL) — voir le détail sur Mysql:drop :
mysql -u root -p -Nse 'SHOW TABLES' nom_base | while read table; do
mysql -u root -p -e "DROP TABLE $table" nom_base
done
Une alternative plus sûre pour vider le contenu d'une table sans la supprimer est
TRUNCATE TABLE (plus rapide qu'un DELETE sans WHERE,
mais comme DROP, généralement non annulable).
Variantes par moteur
- MySQL/MariaDB :
DROP TABLE IF EXISTS t1, t2;accepte une liste de tables. - PostgreSQL :
DROP TABLE ... CASCADEpour supprimer aussi les objets
dépendants (vues, contraintes de clé étrangère).
- Oracle :
DROP TABLE ... PURGEsupprime définitivement sans passer par la
corbeille (recycle bin) — sansPURGE, la table reste récupérable viaFLASHBACK TABLE ... TO BEFORE DROP.
Voir aussi
- Sql — panorama du langage SQL
- Sql:CREATE — créer un objet
- Sql:DELETE — supprimer des lignes (sans supprimer la table)
- Mysql:drop — exemple de purge de toutes les tables d'une base MySQL