DELETE, TRUNCATE 테이블 데이터 삭제 차이

테이블에 있는 데이터를 삭제하는 SQL 명령어로 DELETE와 TRUNCATE이 있습니다. 둘은 다릅니다. 차이점을 정리해보겠습니다.

DELETE

delete는 레코드를 테이블에서 삭제할 때 사용하는 DML(데이터 조작어)입니다. 테이블 내 행 전체를 제거합니다. WHERE 절을 사용해 조건을 걸어서 삭제 대상을 필터링할 수 있습니다. delete 명령어 수행 전 데이터를 백업하면 추후 원할 때 복원할 수 있습니다.

DELETE FROM  테이블명  WHERE  조건;

TRUNCATE

truncate은 테이블 전체 데이터를 제거하는 DDL(데이터 정의어)입니다. where 절을 사용할 수가 없어서 삭제 대상을 필터링 할 수 없습니다. 테이블의 모든 데이터를 날려버립니다. 이 작업은 로그를 남기지 않기 때문에 데이터를 복원할 수 없습니다. truncate은 테이블이 외래 키를 참조하고 있으면 사용할 수 없습니다.

TRUNCATE TABLE  테이블명;

차이점 정리

DELETE TRUNCATE
조건에 따라 테이블에서 단일 또는 복수의 레코드를 제거합니다. 테이블 전체 데이터를 제거합니다. 테이블 자체를 제거하는 것은 아닙니다. 테이블의 스키마도 유지합니다.
DML(데이터 조작 언어) 명령입니다. DDL(데이터 정의 언어) 명령입니다.
WHERE 절을 사용하여 테이블의 특정 행이나 데이터를 필터링할 수 있습니다. WHERE 절을 사용하여 테이블에서 레코드를 필터링하지 않습니다.
레코드를 하나씩 제거합니다. 레코드가 포함된 전체 데이터 페이지를 삭제합니다.
삭제하기 전에 행을 잠급니다. 삭제하기 전에 데이터 페이지를 잠급니다.
데이터만 삭제하기 때문에 테이블 ID를 재설정하지 않습니다. 테이블 ID를 재설정합니다.
삭제된 레코드에 대한 트랜잭션 로그를 유지합니다. 때문에 실행 속도가 느립니다. 삭제된 데이터 페이지에 대한 트랜잭션 로그를 유지하지 않습니다. 때문에 실행 속도가 빠릅니다.
COMMIT 또는 ROLLBACK 문을 사용하여 삭제된 데이터를 복원할 수 있습니다. 명령이 한 번 실행되면 데이터를 복원할 수 없습니다.
인덱싱된 뷰와 함께 사용할 수 있습니다. 인덱싱된 뷰와 함께 사용할 수 없습니다.
반응형

댓글

Designed by JB FACTORY