본문 바로가기
3층 개발관/SQL

[SQL] DROP vs TRUNCATE vs DELETE 비교

by 개발관 2023. 1. 19.
반응형

 

SQL 테이블을 삭제하는 방법에는 3가지 방식이 있습니다.

DROP, DELETE, TRUNCATE 방식에 대해 자세히 알아보도록 하겠습니다.

 

1. DROP 명령어의 개념 및 사용설명

 

DROP 개념 : 데이터베이스를 지우거나, 테이블 자체를 지우는 명령어

 

Drop 특징

1. 테이블을 자체를 삭제하거나, 데이터베이스를 삭제하는데 쓰는 명령어

2. DDL(데이터 정의어) 명령어로 자동으로 Commit됩니다.

3. Rollback이 불가능 합니다.

- DROP 명령어 사용 구문 예시 -

-- 데이터 베이스 삭제 --
DROP DATABASE 데이터베이스명;

-- 테이블 자체를 삭제 --
DROP TABLE 테이블명;

 

 

2. TRUNCATE 명령어의 개념 및 사용설명

 

TRUNCATE 개념 : 테이블 안의 내용을 지움 / CREATE명령어를 쓴 것처럼 데이터가 싹 비워짐

 

TRUNCATE 특징

1. 테이블안의 데이터를 전체 삭제하는데 쓰는 명령어 입니다.

2. DDL(데이터 정의어) 명령어로 자동으로 Commit됩니다.

3. Rollback이 불가능 합니다.

- TRUNCATE 명령어 사용 구문 예시 -

-- 테이블 안의 데이터를 삭제 --
TRUNCATE 테이블명;

 

3. DELETE 명령어의 개념 및 사용설명

 

DELETE 개념 : 테이블안의 내용을 지움 / 데이터 롤백 가능(autocommit상태가 아닐 시)

autocommit에 대한 내용 : https://imkdk.tistory.com/19

 

DELETE 특징

1. 테이블 안의 데이터를 전체 삭제하거나, 조건을 걸어 일부를 삭제하는데 사용됩니다.

2. DML(데이터 조작어) 명령어로 수동으로 Commit해야 합니다.(주의. autocommit이 ON일 경우는 자동으로 Commit합니다.)

3. Commit 전에는 Rollback이 가능하나, Commit후에는 Rollback이 불가능합니다.

- DELETE 명령어 사용 구문 예시 -

-- 테이블 안의 값 전체 삭제 --
DELETE FROM 테이블명;
commit; // commit은 항상 수동으로 해준다(autocommit이 OFF일때)

-- 테이블 안의 값 조건걸어서 일부만 삭제 --
DELETE FROM 테이블명
where 필드명 = '조건';
commit;

 

4. DROP vs TRUNCATE vs DELETE 비교표

 

1) 기존 : 기존테이블을 select 한 값을 보여줌

2) DELETE : where문을 사용하여 조건을 걸어 일부 데이터를 삭제하거나, 테이블 안의 내용을 전부 삭제합니다.

 - Commit전까지 지워진 데이터의 공간이 남아있습니다.

3) TRUNCATE : 테이블안의 데이터값 전체 삭제 (Rollback 불가능)

4) DROP : 테이블 자체를 삭제 (Rollback 불가능)

 

  DROP TRUNCATE DELETE
명령어 종류 DDL(데이터 정의어) DDL(데이터 정의어) DML(데이터 조작어)
처리 속도 빠름 빠름 느림
ROLLBACK 불가능 불가능 Commit 이전에 가능
COMMIT 자동 자동 수동 ( autocommit = off 시)

 


** 참고자료 **

 

https://yurimac.tistory.com/34

https://wikidocs.net/4021

https://lee-mandu.tistory.com/476

https://prinha.tistory.com/entry/SQL-DELETE-TRUNCATE-DROP-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

반응형