테이블의 데이터를 삭제하는 명령어를 찾아보면 어떤 경우는 DELETE 를 사용하는 경우도 있고, 어떠한 경우엔 TRUNCATE 를 사용하는 경우가 있는 것을 본적이 있다.
이 둘이 어떠한 점이 다르고 어떠한 상황에 사용하는게 더 적절한 것인지 간략하게 알아보자.

위와 같은 특징에서 볼 수 있듯 DELETE는 테이블 내의 행을 하나하나 읽고 삭제하기 때문에 데이터를 삭제할 때마다 트랜잭션 로그를 생성하고, 롤백이 가능해야 하기 때문에 비교적 느릴 수 있다.
DELETE FROM table;
DELETE FROM table WHERE "조건";
ROLLBACK;
COMMIT;
데이터 전체를 삭제하는 명령어로, 삭제하게 될경우 용량도 줄어들고, 인덱스 등도 모두 삭제가 되어 초기상태로 돌릴 때 사용한다.
테이블의 형태는 그대로 두고 데이터만 날려버리고 싶을때 사용하고 이는 바로 COMMIT 되기 때문에 트랜잭션 로그를 생성하지도 않고, 롤백도 불가능하기 때문에 비교적 빠른 속도로 데이터를 삭제할 수 있다.
TRUNCATE TABLE table;
테이블 전체를 삭제하는 방법으로 테이블의 저장공간,인덱스 등을 모두 삭제하고 되돌릴 수 없는 상태로 만든다.
이렇게 비슷하면서도 다른 삭제 명령어에 대해서 간략하게 알아보았다.