CodeGym /Cours /SQL SELF /Suppression des tables avec DROP TABLE

Suppression des tables avec DROP TABLE

SQL SELF
Niveau 18 , Leçon 2
Disponible

Allez, parlons un peu de comment bien supprimer des tables d'une base de données avec la commande DROP TABLE.

DROP TABLE — c'est la commande qui te permet de virer une table de ta base, avec toutes ses données et sa structure. Imagine que t'as bossé sur ton projet de fin d'études, et puis tu le brûles par accident avec ton laptop. C'est un peu ça, utiliser DROP TABLE. Flippant, non ? T'inquiète, le plus important c'est de piger comment ça marche et d'être prudent !

Particularités de DROP TABLE :

  • Supprime toute la table (et ses données) sans possibilité de retour en arrière (sauf si t'as fait un backup).
  • Libère complètement l'espace disque pris par la table.
  • Supprime aussi tous les index, contraintes et triggers liés.

Syntaxe de la commande DROP TABLE

La commande DROP TABLE a une syntaxe super simple :

DROP TABLE table;

Où :

  • table — le nom de la table que tu veux supprimer.

Exemple simple de suppression de table

Regarde un exemple. Disons qu'on a une table students :

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INTEGER CHECK (age > 0)
);

Si t'as plus besoin de cette table, tu peux la supprimer avec :

DROP TABLE students;

Après cette commande, la table students aura complètement disparu de la base, avec toutes les infos sur les étudiants (qui pouvaient être dedans).

Suppression de plusieurs tables

Tu peux aussi supprimer plusieurs tables d'un coup. Il suffit de les lister séparées par une virgule :

DROP TABLE table1, table2, table3;

Exemple :

DROP TABLE students, teachers, courses;

Cette commande va supprimer direct trois tables : students, teachers et courses.

Utilisation de IF EXISTS

La commande DROP TABLE va te balancer une erreur si tu tentes de supprimer une table qui n'existe pas. Pour éviter ça, tu peux utiliser l'option IF EXISTS :

DROP TABLE IF EXISTS table_name;

Exemple :

DROP TABLE IF EXISTS students;

Si la table students existe, elle sera supprimée. Si elle n'existe pas, la commande passe sans erreur, juste un warning.

Suppression de tables avec dépendances

Parfois, supprimer une table peut être galère si d'autres tables ou objets en dépendent. Genre, si la table a des clés étrangères liées à d'autres tables. Je t'expliquerai les foreign keys plus en détail au prochain niveau :P

Imaginons que t'as deux tables : students et enrollments. La table enrollments dépend de students, car elle y fait référence avec une clé étrangère.

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE enrollments (
    id SERIAL PRIMARY KEY,
    student_id INTEGER REFERENCES students(id), -- colonne student_id fait référence à students.id
    course_name VARCHAR(100)
);

Si tu tentes de supprimer la table students sans d'abord supprimer enrollments, tu vas avoir une erreur :

DROP TABLE students;
-- ERREUR : impossible de supprimer la table "students" car d'autres objets en dépendent
-- DÉTAIL : la contrainte enrollments_student_id_fkey sur la table enrollments dépend de la table students

Pour supprimer la table et tous les objets dépendants, utilise l'option CASCADE :

DROP TABLE students CASCADE;

Cette commande va supprimer la table students et automatiquement tous les objets qui en dépendent (ici, la table enrollments).

Mais fais gaffe avec CASCADE, ça peut virer plus d'objets que tu pensais. Pour voir ce qui va être supprimé, utilise CASCADE et checke les logs :)

Suppression de tables sans supprimer les objets dépendants

Si tu veux éviter de supprimer par erreur des objets liés, utilise l'option RESTRICT. Cette option interdit la suppression de la table si d'autres objets en dépendent :

DROP TABLE students RESTRICT;

Si la table a des objets dépendants, la commande va balancer une erreur et annuler la suppression.

Tables temporaires et leur suppression

Les tables temporaires (créées avec CREATE TEMP TABLE) sont supprimées automatiquement à la fin de la session de base de données. Mais tu peux aussi supprimer une table temporaire manuellement pendant la session avec DROP TABLE.

Exemple :

CREATE TEMP TABLE temp_data (
    id SERIAL PRIMARY KEY,
    value TEXT
);

DROP TABLE temp_data;

Erreurs classiques avec DROP TABLE

Essayer de supprimer une table qui n'existe pas. Pour éviter l'erreur, utilise IF EXISTS.

DROP TABLE IF EXISTS non_existing_table;

Supprimer une table avec des dépendances sans CASCADE. Si d'autres tables sont liées à la table que tu veux supprimer, la commande va planter. Utilise CASCADE si t'es sûr de vouloir tout virer.

DROP TABLE students CASCADE;

Utiliser CASCADE à tout-va. Ça peut supprimer des objets critiques. Avant d'utiliser CASCADE, sois bien sûr de ce qui va partir.

Supprimer une table par accident. Vérifie toujours deux fois ce que tu supprimes, surtout sur des bases en prod.

Tips utiles, parfois sérieux

Astuce utile 1 : tout nier en bloc

Efface les traces plus vite que les données.
Et ensuite, dis avec assurance : « C'était une anomalie dans les logs. Je l'ai déjà corrigée ».

Fais genre que c'est une feature.
« On a décidé de faire un stress-test de la résilience... Et ouais, le système a pas tenu. Mais maintenant on sait quoi améliorer ! »

Déclare l'évacuation : « On a un incident niveau prod ».
Quand tout le monde court dans tous les sens, personne n'a le temps de demander qui a tapé DELETE FROM sans WHERE.

Mets à jour ton CV sur hh.ru sous le nom DBA.
Maintenant t'es vraiment proche des bases de données. Surtout celles qui existent plus.

Prévois une pause café à l'avance.
Parce que dans quelques minutes, on va peut-être te proposer de « faire une pause du projet... pour toujours ».

Fais genre que c'était le staging.
« T'es sûr que c'était pas l'environnement de test ? On testait un truc... je crois... »

Assieds-toi au milieu de l'open space.
Personne ne croira que le coupable oserait être aussi visible.

Accuse ChatGPT.
C'est la faute à l'IA. Comme tu vois, elle est pas encore prête à te remplacer. Me virez pas, svp.

Astuce utile 2 : comment chercher du taf avec une réputation cramée

  • Supprime toutes les tables d'un coup. Comme ça, la direction sera trop occupée pour virer quelqu'un en particulier.

  • Personne ne se fait virer tout seul. Si tu embarques ton chef avec toi — plus de mauvaises références !

  • T'as supprimé les données clients ? Bravo, maintenant la boîte a des soucis bien plus graves que ton licenciement.

Astuce utile 3 : backup avant suppression

Bon, maintenant — sans blague.

Avant de supprimer une table (surtout si elle contient des données importantes), fais un backup avec la commande pg_dump. Comme ça tu pourras restaurer les données si jamais tu supprimes un truc par erreur.

Exemple de commande de backup :

pg_dump -U username -d database_name -t table_name > table_backup.sql

À ce stade, t'as vu toutes les bases pour bosser avec la commande DROP TABLE. Garde ce « bouton nucléaire » sous la main et utilise-le seulement quand t'es sûr de toi. Dans la prochaine leçon, on continue à explorer les modifs de structure des tables et autres objets de la base.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION