DROP TABLE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Entrepôt dans Microsoft Fabric

Supprime une ou plusieurs définitions de table ainsi que toutes les données, index, déclencheurs, contraintes et spécifications d'autorisation se rapportant à celles-ci. Toute vue ou procédure stockée faisant référence à la table supprimée doit être supprimée explicitement au moyen de l’instruction DROP VIEW ou DROP PROCEDURE. Pour signaler les dépendances sur une table, utilisez sys.dm_sql_referencing_entities.

Conventions de la syntaxe Transact-SQL

Syntaxe

-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric
  
DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]  
[ ; ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
  
DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

database_name
Nom de la base de données dans laquelle la table a été créée.

Azure SQL Database prend en charge le format de nom en trois parties nom_bd.[nom_schéma].nom_objet lorsque nom_bd correspond à la base de données active ou lorsque nom_bd est tempdb et nom_objet commence par #. Azure SQL Database ne prend pas en charge les noms en quatre parties.

IF EXISTS
S’applique à: SQL Server (de SQL Server 2016 (13.x) à la version actuelle).

Supprime, de manière conditionnelle, la table uniquement si elle existe déjà.

schema_name
Nom du schéma auquel appartient la table.

table_name
Nom de la table à supprimer.

Notes

L'instruction DROP TABLE ne peut pas être utilisée pour supprimer une table référencée par une contrainte FOREIGN KEY. Vous devez au préalable supprimer la contrainte FOREIGN KEY ou la table qui la référence. Si la table de référence et la table qui contient la clé primaire sont supprimées dans la même instruction DROP TABLE, la table de référence doit figurer en premier dans la liste.

Il est possible de supprimer plusieurs tables de n'importe quelle base de données. Si une table qui est supprimée fait référence à la clé primaire d'une autre table qui est également en cours de suppression, la table de référence qui contient la clé étrangère doit être répertoriée avant la table contenant la clé primaire à laquelle il est fait référence.

Lorsqu'une table est supprimée, les règles et les valeurs par défaut liées à celle-ci sont dissociées et toutes les contraintes et les déclencheurs qui lui sont associés sont automatiquement supprimés. Si vous recréez la table, vous devez réassocier les règles et valeurs par défaut appropriées, recréer les déclencheurs et ajouter les toutes les contraintes nécessaires.

Si vous supprimez toutes les lignes d’une table à l’aide de DELETE tablename ou si vous utilisez l’instruction TRUNCATE TABLE, la table existe jusqu’à ce que vous la supprimiez.

Les tables et index volumineux qui utilisent plus de 128 étendues sont supprimés en deux phases distinctes : logique et physique. Au cours de la phase logique, les unités d'allocation existantes utilisées par la table sont marquées pour la désallocation et verrouillées jusqu'à la validation de la transaction. Au cours de la phase physique, les pages IAM marquées pour la désallocation sont supprimées physiquement dans des traitements.

Si vous supprimez une table qui contient une colonne VARBINARY(MAX) avec l'attribut FILESTREAM, toutes les données stockées dans le système de fichiers ne seront pas supprimées.

Quand une table de registre est supprimée, ses objets dépendants (la table d’historique et la vue du registre) sont également supprimés. Une table d’historique ou une vue de registre ne peut pas être supprimée directement. Le système applique une sémantique de suppression réversible lors de la suppression des tables de registre et de ses objets dépendants. Ils ne sont pas vraiment supprimés, mais marqués comme supprimés dans les vues du catalogue système et renommés. Pour plus d’informations, consultez les considérations et limitations relatives au registre.

Important

DROP TABLE et CREATE TABLE ne doivent pas être exécutés sur la même table dans le même lot. Sinon, une erreur inattendue risque de se produire.

Autorisations

Nécessite l’autorisation ALTER sur le schéma auquel appartient la table, l’autorisation CONTROL sur la table ou l’appartenance au rôle de base de données fixe db_ddladmin .

Si l’instruction supprime une table de registre, l’autorisation ALTER LEDGER est requise.

Exemples

R. Suppression d'une table dans la base de données active

Cet exemple supprime la table ProductVendor1 ainsi que ses données et ses index de la base de données active.

DROP TABLE ProductVendor1 ;  

B. Suppression d'une table dans une autre base de données

L'exemple suivant supprime la table SalesPerson2 de la base de données AdventureWorks2022. Cet exemple peut être exécuté à partir de n'importe quelle base de données de l'instance de serveur.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;  

C. Suppression d'une table temporaire

Cet exemple crée une table temporaire, teste son existence, la supprime et teste une nouvelle fois son existence. Cet exemple n’utilise pas la syntaxe IF EXISTS qui est disponible depuis SQL Server 2016 (13.x).

CREATE TABLE #temptable (col1 INT);  
GO  
INSERT INTO #temptable  
VALUES (10);  
GO  
SELECT * FROM #temptable;  
GO  
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL   
DROP TABLE #temptable;  
GO  
--Test the drop.  
SELECT * FROM #temptable;  

D. Suppression d’une table à l’aide de IF EXISTS

S’applique à: SQL Server (de SQL Server 2016 (13.x) à la version actuelle).

L’exemple suivant crée une table nommée T1. Ensuite, la deuxième instruction supprime la table. La troisième instruction n’effectue aucune action, car la table est déjà supprimée, mais elle ne génère pas d’erreur.

CREATE TABLE T1 (Col1 INT);  
GO  
DROP TABLE IF EXISTS T1;  
GO  
DROP TABLE IF EXISTS T1;  

Voir aussi

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DELETE (Transact-SQL)
sp_help (Transact-SQL)
sp_spaceused (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
DROP VIEW (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)