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

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse

하나 이상의 테이블 정의 및 해당 테이블의 모든 데이터, 인덱스, 트리거, 제약 조건 및 권한 지정을 제거합니다.Removes one or more table definitions and all data, indexes, triggers, constraints, and permission specifications for those tables. 삭제된 테이블을 참조하는 뷰나 저장 프로시저는 DROP VIEW 또는 DROP PROCEDURE를 사용하여 명시적으로 삭제해야 합니다.Any view or stored procedure that references the dropped table must be explicitly dropped by using DROP VIEW or DROP PROCEDURE. 테이블에 대한 종속성을 보고하려면 sys.dm_sql_referencing_entities를 사용하세요.To report the dependencies on a table, use sys.dm_sql_referencing_entities.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

-- 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 SQL Data Warehouse and Parallel Data Warehouse  
  
DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]  

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

인수Arguments

database_namedatabase_name
테이블이 생성된 데이터베이스 이름입니다.Is the name of the database in which the table was created.

database_name이 현재 데이터베이스이거나 database_name이 tempdb이고 object_name이 #으로 시작하는 경우 Azure SQL Database는 세 부분으로 구성된 이름 형식 database_name.[schema_name].object_name을 지원합니다.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는 네 부분으로 구성된 이름을 지원하지 않습니다.Azure SQL Database does not support four-part names.

IF EXISTSIF EXISTS
적용 대상: SQL ServerSQL Server (SQL Server 2016(13.x)SQL Server 2016 (13.x) ~ 현재 버전).Applies to: SQL ServerSQL Server ( SQL Server 2016(13.x)SQL Server 2016 (13.x) through current version).

이미 있는 경우에만 테이블을 조건부로 삭제합니다.Conditionally drops the table only if it already exists.

schema_nameschema_name
테이블이 속한 스키마의 이름입니다.Is the name of the schema to which the table belongs.

table_nametable_name
제거할 테이블의 이름입니다.Is the name of the table to be removed.

설명Remarks

DROP TABLE로 FOREIGN KEY 제약 조건에 의해 참조되는 테이블을 삭제할 수 없습니다.DROP TABLE cannot be used to drop a table that is referenced by a FOREIGN KEY constraint. 참조하는 FOREIGN KEY 제약 조건 또는 참조하는 테이블을 먼저 삭제해야 합니다.The referencing FOREIGN KEY constraint or the referencing table must first be dropped. 참조하는 테이블과 기본 키를 포함하는 테이블이 하나의 DROP TABLE 문에서 삭제되는 경우 참조하는 테이블이 먼저 나열되어야 합니다.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.

모든 데이터베이스에서 여러 테이블을 삭제할 수 있습니다.Multiple tables can be dropped in any database. 삭제될 다른 테이블의 기본 키를 참조하는 테이블이 삭제되는 경우 외래 키가 있는 참조하는 테이블은 참조되는 기본 키를 포함한 테이블보다 먼저 나열되어야 합니다.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.

테이블을 삭제하면 해당 테이블에 있는 규칙이나 기본값의 바인딩이 해제되고 해당 테이블과 연결된 제약 조건이나 트리거가 자동으로 삭제됩니다.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. 테이블을 다시 만들려면 해당 규칙과 기본값을 다시 바인딩하고 트리거를 다시 만들어야 하며 필요한 제약 조건을 모두 추가해야 합니다.If you re-create a table, you must rebind the appropriate rules and defaults, re-create any triggers, and add all required constraints.

DELETE tablename이나 TRUNCATE TABLE 문을 사용하여 테이블의 모든 행을 삭제하는 경우에는 테이블이 삭제될 때까지 테이블은 남아 있습니다.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.

129개 이상의 익스텐트를 사용하는 큰 테이블 및 인덱스는 논리적 단계와 물리적 단계를 통해 삭제됩니다.Large tables and indexes that use more than 128 extents are dropped in two separate phases: logical and physical. 논리적 단계에서는 테이블에 사용되는 기존 할당 단위가 할당 취소로 표시되고 트랜잭션이 커밋될 때까지 잠깁니다.In the logical phase, the existing allocation units used by the table are marked for deallocation and locked until the transaction commits. 물리적 단계에서는 할당 취소로 표시된 IAM 페이지가 물리적으로 일괄 삭제됩니다.In the physical phase, the IAM pages marked for deallocation are physically dropped in batches.

FILESTREAM 특성이 있는 VARBINARY(MAX) 열이 포함된 테이블을 삭제해도 파일 시스템에 저장된 데이터는 제거되지 않습니다.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.

중요

동일한 일괄 처리에서 동일한 테이블에 대해 DROP TABLE과 CREATE TABLE을 실행할 수는 없습니다.DROP TABLE and CREATE TABLE should not be executed on the same table in the same batch. 이를 실행하면 예기치 않은 오류가 발생할 수 있습니다.Otherwise an unexpected error may occur.

사용 권한Permissions

테이블이 속한 스키마에 대한 ALTER 권한, 테이블에 대한 CONTROL 권한 또는 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.

Examples

A.A. 현재 데이터베이스에서 테이블 삭제Dropping a table in the current database

다음 예에서는 현재 데이터베이스에서 ProductVendor1 테이블과 해당 데이터 및 인덱스를 제거합니다.The following example removes the ProductVendor1 table and its data and indexes from the current database.

DROP TABLE ProductVendor1 ;  

B.B. 다른 데이터베이스에서 테이블 삭제Dropping a table in another database

다음 예에서는 SalesPerson2 데이터베이스에서 AdventureWorks2012AdventureWorks2012 테이블을 삭제합니다.The following example drops the SalesPerson2 table in the AdventureWorks2012AdventureWorks2012 database. 이 예는 서버 인스턴스의 모든 데이터베이스에서 실행할 수 있습니다.The example can be executed from any database on the server instance.

DROP TABLE AdventureWorks2012.dbo.SalesPerson2 ;  

C.C. 임시 테이블 삭제Dropping a temporary table

다음 예에서는 임시 테이블을 만들고 존재 여부를 테스트한 다음 테이블을 삭제하고 다시 존재 여부를 테스트합니다.The following example creates a temporary table, tests for its existence, drops it, and tests again for its existence. 이 예에서는 으로 시작하는 사용 가능한 IF EXISTSSQL 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. IF EXISTS를 사용하여 테이블 삭제Dropping a table using IF EXISTS

적용 대상: SQL ServerSQL Server (SQL Server 2016(13.x)SQL Server 2016 (13.x) ~ 현재 버전).Applies to: SQL ServerSQL Server ( SQL Server 2016(13.x)SQL Server 2016 (13.x) through current version).

다음 예에서는 T1이라는 리소스 풀을 만듭니다.The following example creates a table named T1. 다음으로 두 번째 문이 삭제됩니다.Then the second statement drops the table. 세 번째 문은 테이블이 이미 삭제되었으므로 아무런 작업도 수행하지 않지만 오류는 발생하지 않습니다.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;  

참고 항목See 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)