본문 바로가기
DB/MSSQL (SQLSERVER)

[MSSQL] DELETE문 TRUNCATE문 DROP문 비교 및 사용법

by 커져라불어라 2020. 7. 13.
반응형

안녕하세요. 투자하는 개발자입니다

오늘은 데이터를 삭제할 때 사용하는 DELETE, TRUNCATE, DROP 쿼리들을 배워보겠습니다.

모든 DB들 마다 그들의 철학과 정책이 다르겠지만, 최소한 CRUD는 같은 쿼리를 사용하기 때문에

기본적인 쿼리를 알고 계신다면 데이터베이스에 관계없이 활용하실 수 있습니다.


데이터를 삭제할 때 사용하는 쿼리는 DELETE문, TRUNCATE문 DROP문이 있습니다.

결국 최종목표인 데이터를 삭제하는 결과는 동일해지나, 각각의 차이점이 존재합니다.



구분 

 테이블

저장공간 

속도 

복구

 DELETE

존재

존재 

느림 

가능

 TRUNCATE

삭제 

삭제 

빠름 

불가

 DROP

삭제 

삭제 

빠름 

불가


1. DELETE

DELETE FROM [스키마].[테이블명]
cs

입력한 테이블의 데이터를 삭제 하실 수 있습니다.
데이터를 삭제하지만 그 안에 디스크 공간은 그대로 남아있습니다.
특히 DELETE는 ROLLBACK을 통해 삭제한 데이터도 살릴 수 있는 특징이 있습니다.


DELETE FROM [스키마].[테이블명]
WHERE [조건컬럼] = [조건값]
cs

WHERE조건을 추가하면 테이블 내 원하시는 컬럼의 값을 삭제하거나, 조건에 포함되는 범위의 값을 삭제하실 수 있습니다. (BETWEEN, IN 등을 활용)

2.TRUNCATE

TRUNCATE TABLE [스키마명].[테이블명]
cs



TRUNCATE문은 테이블내 데이터를 삭제하는 쿼리입니다. 
다만 테이블을 삭제하는 것이 아닌, 테이블 내 데이터를 삭제하여 소위 테이블 껍데기는 그대로 남아 있게 됩니다. 
증분작업처리를 할 때, 퍼포먼스에 따라 TRUNCATE로 처리할때가 상당히 많이 있습니다. 참고로 TRUNCATE는 AUTO COMMIT이여서 한번 삭제하면 복구할 수 없습니다.

3. DROP

DROP TABLE [스키마명].[테이블명]
cs


DROP문은 테이블 전체를 삭제하는 쿼리입니다. DROP 역시 AUTO COMMIT이여서 한번 삭제하면 복구할 수 없습니다.



참고로 PostgreSQL에서는 DROP문 사용시 TRUNCATE문을 먼저 사용 후 DROP문을 사용하시는 것이 좋습니다. 

이유는 DROP문으로 테이블 및 데이터를 삭제하여도, 소위 데이터 찌꺼기들이 남아 있어 나중에 하나하나 찾아 삭제할 번거로움이 있기에 데이터를 삭제 후 DROP으로 테이블을 삭제해주세요~





반응형