본문 바로가기

IT

MySQL 데이터 삭제 명령어 비교(DROP, TRUNCATE, DELETE의 차이점)

728x90
반응형
728x170

MySQL에서 DROP, TRUNCATE, 및 DELETE 명령은 모두 데이터를 제거하는 데 사용되지만, 그 방법과 특성이 서로 다릅니다. 각 명령의 차이점을 예시와 함께 설명하겠습니다.

1. DROP

  • 용도: DROP 명령은 테이블 자체를 데이터베이스에서 완전히 제거합니다. 이 명령은 테이블 구조, 정의, 데이터, 테이블에 대한 모든 제약 조건과 인덱스를 삭제합니다.
  • 복구: DROP을 사용하면 되돌릴 수 없습니다. 테이블이 완전히 삭제되어 복구가 불가능합니다.
  • 성능: 데이터와 테이블의 구조를 한 번에 제거하기 때문에 매우 빠릅니다.
  • 예시: DROP TABLE students; - 이 명령은 students라는 테이블을 데이터베이스에서 완전히 삭제합니다.

2. TRUNCATE

  • 용도: TRUNCATE 명령은 테이블의 모든 데이터를 빠르게 삭제하지만, 테이블 구조와 정의는 그대로 유지합니다.
  • 복구: TRUNCATE는 일반적으로 되돌릴 수 없지만, 일부 데이터베이스 시스템에서는 트랜잭션 내에서 사용할 경우 롤백이 가능할 수 있습니다.
  • 성능: TRUNCATE는 DELETE보다 훨씬 빠르며, 테이블의 모든 행을 빠르게 제거합니다.
  • 예시: TRUNCATE TABLE students; - 이 명령은 students 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 남아있습니다.

3. DELETE

  • 용도: DELETE 명령은 테이블에서 하나 이상의 행을 삭제합니다. 조건을 지정하여 특정 행만 삭제할 수 있습니다.
  • 복구: DELETE는 트랜잭션 내에서 사용되는 경우 롤백이 가능하므로 되돌릴 수 있습니다.
  • 성능: DELETE는 행 단위로 작동하며, 인덱스 유지 및 트리거 실행 등 추가 작업이 필요할 수 있어 상대적으로 느립니다.
  • 예시: DELETE FROM students WHERE grade = 'F'; - 이 명령은 students 테이블에서 성적이 'F'인 학생들의 데이터만 삭제합니다.

요약

  • DROP: 테이블과 모든 데이터를 완전히 삭제합니다. 이 작업은 되돌릴 수 없으며, 실행이 매우 빠릅니다.
  • TRUNCATE: 테이블의 모든 데이터를 빠르게 삭제하지만, 테이블 구조는 그대로 유지됩니다. 대부분의 경우 이 작업은 되돌릴 수 없습니다.
  • DELETE: 조건에 따라 특정 행을 삭제합니다. 이 명령은 되돌릴 수 있지만, 처리 속도가 상대적으로 느립니다.

 

도표로 한눈에 비교하는 DELETE vs DROP vs TRUNCATE

명령 테이블 구조 제거 데이터 제거 복구 가능 성능 사용 사례
DROP 아니오 매우 빠름 테이블을 완전히 제거
TRUNCATE 아니오 대부분 아니오 빠름 모든 데이터 제거, 구조는 유지
DELETE 아니오 조건부 느림 특정 행 제거
728x90
반응형
그리드형