본문 바로가기
프로젝트(종료)/SQLD 자격증 따기

DELETE와 TRUNCATE와 DROP 표로 이해하기

by 일말고프로젝트 2021. 3. 8.

 

DROP TRUNCATE DELETE
테이블 자체를 삭제해라 테이블의 데이터를 전부 삭제하고, 사용하고 있는 공간을 반납해라 테이블의 데이터를 전부 삭제하고 기록해라
DDL DDL(일부 DML 성격 가짐) DML
Rollback 불가능 Rollback 불가능 Commit 이전 Rollback 가능
Auto Commit Auto Commit 수동 Commit
테이블이 사용했던 모든 Storage 모두 Release 테이블이 사용했던 Storage중 최초 테이블 생성시 할당된 Storage만 남기고 Release 데이터를 모두 Delete해도 Storage는 Realease 되지 않음
테이블의 정의 자체를 완전히 삭제함 테이블을 최초 생성된 초기 상태로 만듦 데이터만 삭제

 

 

기본적으로 Storage 처리 방법에 따라 세 명령어의 결과가 달라진다,

 

우선, Storage를 모두 없애는 DROP의 경우, 테이블의 정의와 생성, 수정 기록을 모두 지우기 때문에 당연히 Rollback은 안되고 테이블에 대한 정의 명령어이므로 DDL이다.

 

그리고 최초 Storage만 남기고 모두 지우는 TRUNCATE는 우선 Storage를 삭제하기 때문에 Rollback은 불가능하지만, 최초 테이블의 형태는 가지고 있기 때문에 DDL이지만 DML 성격을 가진다.

 

마지막으로 DELETE는 Storage를 건들지 않고 데이터만 삭제하므로 Rollback이 가능하고, 데이터에 대한 처리이므로 DML이다. 또한, 다른 두 명령어와 다르게 Rollback 기록을 하기 때문에 속도가 느리며 용량을 많이 잡아먹는다.

 

TRUNCATE 개념이 직관적이진 않다..

 

메모리 잘 생각해서 DELETE만 쓰지 말고, TRUNCATE 자주 써봐야겠다.

내일 쿼리 쳐다보면서 실 사용 예를 찾아봐야겠다.

 

사진출처 : wikidocs.net/4021

'프로젝트(종료) > SQLD 자격증 따기' 카테고리의 다른 글

여러가지 COUNT() 쓰임새  (0) 2021.03.09
DISTINCT와 GROUP BY의 차이  (0) 2021.03.09
PK와 FK  (0) 2021.03.04
DML, DDL, DCL, TCL에 대해  (0) 2021.03.03
ON DELETE CASCADE와 SET NULL  (0) 2021.03.03

댓글