본문 바로가기
공부 및 정리/기타 정리

[SQL] DELETE, TRUNCATE, DROP

by 스파이펭귄 2024. 4. 24.
728x90

기본적으로 세 SQL 명령어 모두 데이터 삭제시 사용하는 명령어다.

하지만 각각의 명령어는 다른 방식으로 작동한다.

 

DELETE (DML)

DELETE 명령은 하나 이상의 행을 제거 시 사용한다. 일반적으로는 WHERE 문과 함께 사용하여 특정 조건과 일치하는 데이터를 삭제하는데 사용한다.

이때 WHERE 문을 붙이지 않으면 테이블 내의 모든 데이터가 삭제되는데 이 방식은 여전히 행 단위로 처리되기 때문에 상당히 느릴 수 있으며 많은 양의 데이터 삭제 시 많은 리소스를 사용할 수 있다. 또한 행마다 트리거를 활성화 할 수 있다.

또한 COMMIT 명령어가 적용되기 전이라면 DELETE 작업은 로그를 남기기 때문에 삭제된 데이터를 ROLLBACK 해 복구 할 수 있다.

 

TRUNCATE (DDL)

TRUNCATE 명령은 테이블의 모든 행을 빠르게 삭제한다. WHERE 문을 사용할 수 없기 때문에 특정 조건의 행만을 삭제하지는 못한다. (DELETE와 Trade off)

또한 데이터의 복구가 어렵고 트리거를 활성화 하지 않는다.

테이블 내의 데이터는 삭제되나 테이블의 구조는 유지된다는 특징을 갖는다.

 

DROP (DDL)

DROP 명령은 테이블 자체를 데이터 베이스에서 제거해버리는 명령이다. 만약 제거했다면 복구가 불가능하기에 CREATE를 통해 다시 만들어 주어야 한다.

 

세 줄 요약

  • WHERE를 통한 특정 행 제거시 DELETE
  • 테이블 내 전체 데이터 삭제시 TRUNCATE (복구 어려움에 주의)
  • 테이블 자체를 데이터베이스에서 삭제시 DROP

 

Reference

728x90

'공부 및 정리 > 기타 정리' 카테고리의 다른 글

RAID  (0) 2024.04.25
CTE와 Recursive 쿼리  (0) 2024.04.25
동기, 비동기, Blocking, Non-Blocking  (0) 2024.04.14
CAP 정리  (1) 2024.03.06
트랜잭션과 ACID  (0) 2024.03.05