Published on

July 8, 2019

Comprendre l’instruction SQL DROP TABLE

Dans SQL Server, l’instruction DROP TABLE est utilisée pour supprimer une ou plusieurs tables d’une base de données. Cette instruction supprime complètement la structure de la table ainsi que tous les index, statistiques, autorisations, déclencheurs et contraintes associés. Cependant, elle ne supprime pas les procédures stockées et les vues qui font référence à la table, il faut donc les supprimer explicitement.

Avant d’entrer dans la syntaxe et les exemples de l’instruction DROP TABLE, comprenons d’abord pourquoi nous pourrions vouloir l’utiliser. Un scénario courant est lorsque nous avons besoin d’apporter des modifications en masse à une table. De nombreux administrateurs de bases de données effectuent une sauvegarde au niveau de la table avant d’apporter des modifications, ce qui implique de créer une autre table de sauvegarde avec un nom différent. Cependant, ces tables de sauvegarde peuvent s’accumuler avec le temps et occuper un espace disque inutile. De plus, si vous effectuez une maintenance des index pour tous les index, cela peut ajouter une surcharge supplémentaire au système. Dans de tels cas, effectuer régulièrement un nettoyage en supprimant les tables inutiles peut être bénéfique.

La syntaxe de l’instruction SQL DROP TABLE est la suivante:

DROP TABLE [nom_base_de_données].[nom_schema].[nom_table]

Les paramètres utilisés dans cette syntaxe sont:

  • nom_base_de_données: Spécifie le nom de la base de données dans laquelle se trouve la table. Ce paramètre peut être omis si la commande de suppression est exécutée dans le contexte de la base de données actuelle.
  • nom_schema: Spécifie le nom du schéma auquel l’objet appartient. Si l’objet appartient au schéma par défaut (dbo), ce paramètre peut être omis car SQL Server utilise automatiquement le schéma dbo. Cependant, si l’objet appartient à un schéma autre que le schéma par défaut, le nom du schéma doit être spécifié.
  • nom_table: Spécifie le nom de la table que nous voulons supprimer.

Maintenant, examinons quelques exemples pour mieux comprendre le fonctionnement de l’instruction DROP TABLE.

Exemple 1: Suppression d’une seule table

Pour supprimer une seule table, vous pouvez exécuter la requête suivante:

DROP TABLE AdventureWorks2017.HumanResources.Employee13072019;

Si la table appartient au schéma par défaut (dbo), vous pouvez également utiliser la requête suivante:

USE AdventureWorks2017;
DROP TABLE HumanResources.Employee13072019;

Exemple 2: Suppression de plusieurs tables

Vous pouvez supprimer plusieurs tables ensemble en utilisant une seule instruction DROP TABLE. Par exemple, créons trois tables puis supprimons-les:

CREATE TABLE Sam (id INT);
CREATE TABLE Amp (id INT);
CREATE TABLE Rmp (id INT);

DROP TABLE Sam, Amp, Rmp;

Exemple 3: Suppression d’une table avec une contrainte de clé étrangère

Si une table a une contrainte de clé étrangère, vous ne pouvez pas la supprimer directement. Vous devez soit supprimer la relation de clé étrangère, soit supprimer d’abord la table enfant. Comprendons cela avec un exemple:

CREATE TABLE Department (
  Dept_id INT IDENTITY PRIMARY KEY,
  Dept_name VARCHAR(50) NOT NULL
);

CREATE TABLE Employee1 (
  EmpID INT IDENTITY PRIMARY KEY,
  EmpName VARCHAR(50) NOT NULL,
  Dept_id INT NOT NULL,
  FOREIGN KEY (Dept_id) REFERENCES department (dept_id)
);

DROP TABLE Employee1;
DROP TABLE Department;

Exemple 4: Suppression d’une table temporaire

Vous pouvez également supprimer une table temporaire de la même manière qu’une table régulière. Par exemple:

CREATE TABLE #temp1 (col1 INT);

INSERT INTO #temp1 VALUES (100);

DROP TABLE #temp1;

Exemple 5: Suppression d’une table avec IF EXISTS

Avant SQL Server 2016, les développeurs utilisaient l’instruction IF EXISTS pour vérifier l’existence d’une table avant de la supprimer. Cela était fait pour éviter les erreurs lors de la tentative de suppression d’une table qui n’existe pas. À partir de SQL Server 2016, vous pouvez utiliser la nouvelle syntaxe de l’instruction DROP TABLE pour obtenir le même résultat de manière plus courte et plus simple. Voici un exemple:

DROP TABLE IF EXISTS Department;

Cette instruction supprimera la table uniquement si elle existe déjà, éliminant ainsi la nécessité de vérifications supplémentaires.

Il est important de noter que lors de la suppression d’une table utilisée dans des procédures stockées ou des vues, SQL Server ne génère aucun message d’erreur. Pour vous assurer que les procédures et les vues peuvent fonctionner correctement après la suppression de la table, vous devez vérifier les dépendances et les résoudre en conséquence.

Conclusion

Dans cet article, nous avons exploré l’instruction SQL DROP TABLE et son utilisation pour supprimer des tables d’une base de données SQL. Nous avons vu comment supprimer des tables simples et multiples, gérer les contraintes de clé étrangère, supprimer des tables temporaires et utiliser la syntaxe IF EXISTS pour éviter les erreurs. Il est important de faire preuve de prudence lors de la suppression de tables, en particulier dans une base de données de production, et de prendre en compte les dépendances et l’impact sur les autres objets.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.