본문 바로가기
Data/Oracle

[SQL] DELETE / TRUNCATE / DROP 차이점

by prinha 2020. 7. 30.
반응형

 

1) DELETE

- WHERE절을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거하는 방식

- WHERE절을 사용하지않고 테이블의 모든 데이터를 삭제하더라도, 내부적으로는 한줄 한줄 일일히 제거하는 과정을 거침

- 처리속도가 늦고, 퍼포먼스에 좋지않은 영향을 줄 수 있음

- 원하는 데이터만 골라서 삭제할 때에는 DELETE 사용 / 전체 데이터 삭제할 때에는 TRUNCATE 사용

- 데이터를 삭제하더라도 데이터가 담겨있던 Storage는 Release 되지않는다.

- DELETE된 데이터는 COMMIT 명령어를 사용하기 전이라면, ROLLBACK 명령어를 통해 되돌릴 수 있음

DELETE FROM dbtable;
DELETE FROM dbtable WHERE {조건};
ROLLBACK;
COMMIT;

 

 

2) TRUNCATE

- 전체 데이터를 한번에 삭제하는 방식 ( <-> DELETE)

- 최초 생성되었을 당시의 Storage만 남기고, 데이터가 남겨있던 Storage는 Release 된다.

- TRUNCATE TABLE을 하면 CREATE TABLE을 한 직후의 상태와 같다.

- 자동 COMMIT이 되는 명령어이기 때문에, 이미 지운 데이터는 되돌릴 수 없다.

TRUNCATE TABLE dbtable;

 

 

3) DROP

- 테이블 자체를 완전히 날려버리는 방식 -> 처음부터 없었던 테이블처럼

- 테이블 자체가 모두 지워지며, 해당 테이블에 생성되어있던 모든 인덱스도 사라진다.

자동 COMMIT이 되는 명령어이기 때문에, 이미 지운 데이터는 되돌릴 수 없다.

- 오라클10g부터는 테이블이 삭제되는 것이 아니라 윈도우의 휴지통 개념처럼 잠시 삭제 -> 테이블 이름이 BIN$..로 변경됨

DROP TABLE dbtable;

 

 

  DELETE TRUNCATE DROP
명령어 종류 DML DDL DDL
처리 속도 느림 빠름 빠름
COMMIT 사용자가 직접 자동 자동
ROLLBACK 가능 여부 commit 이전엔 가능 불가 불가
삭제 방식 데이터만 삭제 테이블을 create 상태로 되돌림 테이블까지 완전히 제거

 

 

 

출처 및 참고

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

http://blog.naver.com/PostView.nhn?blogId=idjoopal&logNo=221559099309&parentCategoryNo=68&categoryNo=&viewDate=&isShowPopularPosts=true&from=search

 

 

 

반응형