DELETE, TRUNCATE, DROP의 차이

hyo3·2023년 12월 18일

DBMS

목록 보기
1/1
post-thumbnail

✔ DELETE, TRUNCATE, DROP의 차이

SQLD를 취득한지도 어언 2년이 지나고 실제로 사용하는 쿼리는 SELECT * FROM 테이블명이 다인 나에게 면접 질문으로 'DELETE, TRUNCATE, DROP의 차이'라는 질문이 성큼 다가왔다... 면접에서 탈탈 털리고 작성하는 글...🫠


1. DELETE

  • 먼저 예시문을 살펴보자
DELETE FROM [테이블명]; --전체 행 삭제
DELETE FROM [테이블명] WHERE [조건]; --조건부 삭제
  • DELETE는 DML로 데이터 조작어이다 -> 즉, 데이터를 삭제한다
  • DELETE는 WHERE절과 함께 사용하여 특정 행을 삭제할 수 있다
  • 인덱싱 된 VIEW(뷰)와 함께 사용할 수 있다
  • DELETE는 삭제된 각 행에 대해 트랜잭션 로그를 기록한다
    • 따라서 TRUNCATE보다 느리다
  • TRUNCATE보다 더 많은 트랜잭션 공간을 사용한다
  • ROLLBACK(실행 취소) 가능
  • 테이블의 용량은 감소하지 않는다
    • 테이블 자체를 지우는 것이 아니고 데이터만 삭제하기 때문

2. TRUNCATE

  • 예시문
TRUNCATE TABLE [테이블명];
  • TRUNCATE는 DDL로 데이터 정의어이다
  • TRUNCATE와 WHERE절을 함께 사용할 수 없다
    • 개별적으로 행 삭제 불가능
  • TRUNCATE는 테이블에서 모든 행을 제거한다
  • 트랜잭션 로그에 한 번만 기록되므로 DELETE보다 성능 면에서 더 빠르다
  • 인덱싱 된 VIEW(뷰)와 함께 사용할 수 없다
  • ROLLBACK(실행 취소) 불가능
  • 테이블의 용량이 초기화된다

3. DROP

  • 예시문
DROP TABLE [테이블명];
  • DROP은 DDL로 데이터 정의어이다
  • DROP 명령은 데이터베이스에서 테이블 자체를 제거한다
    • 테이블의 행, 인덱스, 권한 모두 제거
  • 테이블의 행이 제거될때, DML(데이터 조작 명령어) 트리거가 실행되지 않는다
  • ROLLBACK(실행 취소) 불가능

정리

명령어DELETETRUNCATEDROP
종류DMLDDLDDL
기능특정 조건에 맞는 행 삭제테이블의 모든 데이터 삭제테이블 자체 및 데이터 삭제
테이블 구조 변화유지됨 (데이터만 삭제)유지됨 (데이터만 삭제)완전히 삭제됨
롤백 가능 여부가능 (트랜잭션에 포함된 경우)불가능불가능
트랜잭션 영향트랜잭션에 포함될 수 있음트랜잭션에 포함될 수 없음트랜잭션에 포함될 수 없음
속도상대적으로 느림상대적으로 빠름상대적으로 빠름

0개의 댓글