DROP TABLE (Transact-SQL)DROP TABLE (Transact-SQL)

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data WarehouseS’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

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.Removes one or more table definitions and all data, indexes, triggers, constraints, and permission specifications for those tables. 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.Any view or stored procedure that references the dropped table must be explicitly dropped by using DROP VIEW or DROP PROCEDURE. Pour signaler les dépendances sur une table, utilisez sys.dm_sql_referencing_entities.To report the dependencies on a table, use sys.dm_sql_referencing_entities.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- Syntax for SQL Server and Azure SQL Database  
  
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 }
[;]  

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentsArguments

database_namedatabase_name
Nom de la base de données dans laquelle la table a été créée.Is the name of the database in which the table was created.

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 supports the three-part name format database_name.[schema_name].object_name when the database_name is the current database or the database_name is tempdb and the object_name starts with #. Azure SQL Database ne prend pas en charge les noms en quatre parties.Azure SQL Database does not support four-part names.

IF EXISTSIF EXISTS
S’applique à: SQL ServerSQL Server (de SQL Server 2016 (13.x)SQL Server 2016 (13.x) à la version actuelle).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

Supprime, de manière conditionnelle, la table uniquement si elle existe déjà.Conditionally drops the table only if it already exists.

schema_nameschema_name
Nom du schéma auquel appartient la table.Is the name of the schema to which the table belongs.

table_nametable_name
Nom de la table à supprimer.Is the name of the table to be removed.

NotesRemarks

L'instruction DROP TABLE ne peut pas être utilisée pour supprimer une table référencée par une contrainte FOREIGN KEY.DROP TABLE cannot be used to drop a table that is referenced by a FOREIGN KEY constraint. Vous devez au préalable supprimer la contrainte FOREIGN KEY ou la table qui la référence.The referencing FOREIGN KEY constraint or the referencing table must first be dropped. 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.If both the referencing table and the table that holds the primary key are being dropped in the same DROP TABLE statement, the referencing table must be listed first.

Il est possible de supprimer plusieurs tables de n'importe quelle base de données.Multiple tables can be dropped in any database. 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.If a table being dropped references the primary key of another table that is also being dropped, the referencing table with the foreign key must be listed before the table holding the primary key that is being referenced.

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.When a table is dropped, rules or defaults on the table lose their binding, and any constraints or triggers associated with the table are automatically dropped. 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.If you re-create a table, you must rebind the appropriate rules and defaults, re-create any triggers, and add all required constraints.

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.If you delete all rows in a table by using DELETE tablename or use the TRUNCATE TABLE statement, the table exists until it is dropped.

Les tables et index volumineux qui utilisent plus de 128 étendues sont supprimés en deux phases distinctes : logique et physique.Large tables and indexes that use more than 128 extents are dropped in two separate phases: logical and physical. 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.In the logical phase, the existing allocation units used by the table are marked for deallocation and locked until the transaction commits. Au cours de la phase physique, les pages IAM marquées pour la désallocation sont supprimées physiquement dans des traitements.In the physical phase, the IAM pages marked for deallocation are physically dropped in batches.

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.If you drop a table that contains a VARBINARY(MAX) column with the FILESTREAM attribute, any data stored in the file system will not be removed.

Important

DROP TABLE et CREATE TABLE ne doivent pas être exécutés sur la même table dans le même lot.DROP TABLE and CREATE TABLE should not be executed on the same table in the same batch. Sinon, une erreur inattendue risque de se produire.Otherwise an unexpected error may occur.

AutorisationsPermissions

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 .Requires ALTER permission on the schema to which the table belongs, CONTROL permission on the table, or membership in the db_ddladmin fixed database role.

ExemplesExamples

R.A. Suppression d'une table dans la base de données activeDropping a table in the current database

Cet exemple supprime la table ProductVendor1 ainsi que ses données et ses index de la base de données active.The following example removes the ProductVendor1 table and its data and indexes from the current database.

DROP TABLE ProductVendor1 ;  

B.B. Suppression d'une table dans une autre base de donnéesDropping a table in another database

L'exemple suivant supprime la table SalesPerson2 de la base de données AdventureWorks2012AdventureWorks2012.The following example drops the SalesPerson2 table in the AdventureWorks2012AdventureWorks2012 database. Cet exemple peut être exécuté à partir de n'importe quelle base de données de l'instance de serveur.The example can be executed from any database on the server instance.

DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;  

C.C. Suppression d'une table temporaireDropping a temporary table

Cet exemple crée une table temporaire, teste son existence, la supprime et teste une nouvelle fois son existence.The following example creates a temporary table, tests for its existence, drops it, and tests again for its existence. Cet exemple n’utilise pas la syntaxe IF EXISTS qui est disponible depuis SQL Server 2016 (13.x)SQL Server 2016 (13.x).This example does not use the IF EXISTS syntax which is available beginning with SQL Server 2016 (13.x)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.D. Suppression d’une table à l’aide de IF EXISTSDropping a table using IF EXISTS

S’applique à: SQL ServerSQL Server (de SQL Server 2016 (13.x)SQL Server 2016 (13.x) à la version actuelle).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

L’exemple suivant crée une table nommée T1.The following example creates a table named T1. Ensuite, la deuxième instruction supprime la table.Then the second statement drops the 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.The third statement performs no action because the table is already deleted, however it does not cause an error.

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

Voir aussiSee Also

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