본문 바로가기
IT/DB

DB - DROP, TRUNCATE, DELETE 차이점 비교

by 꿀코 2023. 2. 18.
반응형

데이터베이스에서 데이터를 삭제하는 명령어는 DROP, DELETE, TRUNCATE 3가지가 있습니다. 모두 데이터를 삭제하는 명령어이지만 동작하는 방식에서 차이점을 가지고 있으며, SQLD와 같은 시험에도 빈번하게 출제되는 개념입니다.

1. DROP

DROP 명령어는 데이터베이스에서 테이블 자체를 지우는 명령어로서 테이블을 삭제하고 저장 공간도 비워집니다.

DROP TABLE 테이블명;
  • 데이터 정의어(DDL : Data Definition Language)
  • 테이블 및 테이블의 모든 데이터를 제거
  • 테이블에 적용된 인덱스, 트리거, 제약조건, 권한 등을 모두 삭제
  • 실행될 때 트리거 작용하지 않음
  • ROLLBACK 할 수 없음
  • 저장 공간 반납

 

2. TRUNCATE

TRUNCATE 명령어는 테이블을 유지한 상태로 저장된 모든 데이터를 삭제하고 저장 공간도 비워집니다.

TRUNCATE TABLE 테이블명;
  • 데이터 정의어(DDL : Data Definition Language)
  • 테이블 자체는 유지
  • 테이블의 모든 데이터 삭제
  • 조건(WHERE)절 적용 불가
  • 데이터 삭제 시 트랜잭션 로그에 한 번만 기록되므로 DELETE 보다 성능이 좋음
  • TRUNCATE VIEW로 사용할 수 없음
  • 테이블에 대한 ALTER 권한 필요
  • ROLLBACK 할 수 없음
  • 저장 공간 반납

 

3. DELETE

DELETE 명령어는 테이블을 유지한 상태로 특정 데이터 또는 모든 데이터를 삭제하고 저장 공간은 비우지 않습니다.

DELETE FROM 테이블명;
DELETE FROM 테이블명 WHERE 조건;
  • 데이터 정의어(DML : Data Manipulation Language)
  • 테이블 자체는 유지
  • 테이블의 특정 데이터 또는 전체 데이터 삭제
  • 조건(WHERE)절 적용 가능
  • 데이터 삭제 시 트랜잭션 로그에 각 행에 대하여 기록되므로 성능이 떨어짐
  • VIEW에서 사용할 수 있음
  • 테이블에 대한 DELETE 권한 필요
  • ROLLBACK 할 수 있음
  • 저장 공간 유지

 

∴ 정리

DROP > TRUNCATE > DELETE 순서로 삭제 명령에 대한 범위가 넓다고 볼 수 있습니다. 따라서 테이블 및 데이터 삭제 시에 각각의 특성에 맞게 적절하게 명령어를 사용하여 효율적으로 DB의 성능과 저장 공간을 관리할 수 있습니다.
마지막으로 DELETE 명령어를 사용하여 특정 데이터만 지우려고 할 때에는 WHERE 조건을 의도한 대로 주었는지 반드시 확인하시길 바랍니다.

반응형

댓글