L2 Info : Bases de données
 
◃  Ch. 6 Retour sur DDL  ▹
 

Suppression de tables, vues, ...

  • Syntaxe :
    DROP [IF EXISTS] [TABLE|VIEW|INDEX|SEQUENCE] nom
  • Le contenu des tables est supprimé
  • Seule la vue est supprimée, les données issues des tables associées sont préservées
  • PostgreSQL et MySQL autorisent la suppression de plusieurs éléments simultanément
    DROP TABLE table1, table2, ..., tablen;
  • Options de DROP TABLE
    • IF EXISTS valable pour PostgreSQL et MySQL
      DROP TABLE IF EXISTS Etudiant; 
    • CASCADE permet de supprimer aussi toutes les structures dépendant de la table (VIEW, références de clé étrangères, ...)
    • RESTRICT correspond au mode par défaut
    • MySQL accepte CASCADE et RESTRICT par souci de compatibilité mais n'en tient pas compte!
  • Exemple (avec PostgreSQL) :
    la table Professeur est référencée par la table Diplome via une clé étrangère sur prof_id
    pgl2mi=# DROP TABLE professeur;
    ERROR:  cannot drop table professeur because other objects depend on it
    DETAIL:  constraint diplome_prof_id_fkey on table diplome depends on table professeur
    HINT:  Use DROP ... CASCADE to drop the dependent objects too.
    pgl2mi=# DROP TABLE professeur CASCADE ;
    NOTICE:  drop cascades to constraint diplome_prof_id_fkey on table diplome
    DROP TABLE
    pgl2mi=# SELECT * FROM diplome;
     dip_id | dip_nom | dip_niveau | dip_discipline | prof_id
    --------+---------+------------+----------------+---------
          1 | Master  | M2         | Informatique   |       1
          2 | Licence | L3         | Informatique   |       3
    (2 rows)
    
    
    Seule la contrainte de clé étrangère a été supprimée dans la structure de la table Diplome.