개발/DB

drop, delete, truncate 차이점 및 개념 이해하기

Mr.mandu. 2019. 11. 6. 07:00

안녕하세요.

오늘의 포스팅 주제는 DROP, TRUNCATE, DELETE 명령어에 대해 알아보고자 합니다.

그리고 차이점을 알아보도록 하겠습니다.


TRUNCATE 명령어

개념 : 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납

설명 

 - 해당 테이블의 데이터가 모두 삭제되지만 테이블 자체가 지워지는 것은 아님

 - 해당 테이블에 생성되어 있던 인덱스도 함께 truncate 됨

사용 : TRUNCATE TABLE lee_Table;


DROP 명령

개념 : 테이블 자체를 삭제하는 명령어

설명

 - 테이블 자체가 모두 지워지며, 해당 테이블에 생성되어 있던 인덱스도 삭제됨

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

사용 : DROP TABLE lee_table;


Delete, Truncate, Drop 모두가 삭제하는 명령어 입니다.

이때, 중요한 차이점이 있습니다.

DELETE 후에는 데이터만 지워지고 쓰고 있던 디스크 상의 공간은 그대로 가지고 있습니다.

TRUNCATE 작업은 최초 테이블이 만들어졌던 상태, 즉 데이터가 1건도 없는 상태로 모든데이터 삭제, 칼럼값만 남아 있습니다.

그리고 용량도 줄고 인덱스 등도 모두 삭제 됩니다.

→ DELETE보다 TRUNCATE가 더 좋아 보이나 DELETE는 원하는 데이터만 골라서 삭제가 가능하나 TRUNCATE는 그렇지 못합니다.


DROP 명령어는 데이터와 테이블 전체를 삭제하게 되고 

사용하고 있던 공간도 모두 반납하고 인덱스나 제약조건 등 오브젝트로 삭제 됩니다.


포스팅하면서 정리하는 기회가 되서 기분이 좋네요.

모두 좋은하루 보내세요.