Sql:DROP

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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 ... CASCADE pour supprimer aussi les objets
 dépendants (vues, contraintes de clé étrangère).
  • Oracle : DROP TABLE ... PURGE supprime définitivement sans passer par la
 corbeille (recycle bin) — sans PURGE, la table reste récupérable via
 FLASHBACK 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