CS/SQL

[MYSQL] 데이터 삭제 DELETE, DROP, TRUNCATE

seulll 2024. 11. 19. 18:36

DELETE, DROP, TRUNCATE는 모두 데이터베이스에서 데이터를 삭제하는 명령어지만, 각각의 목적과 동작 방식이 다르다.

 


DELETE, DROP, TRUNCATE 특징

1. DELETE

  • 테이블에서 특정 조건에 맞는 데이터를 삭제하는 데 사용된다.
  • 삭제한 데이터는 트랜잭션 로그에 기록되므로 롤백이 가능하다.
  • WHERE 절을 사용하여 특정 조건에 맞는 데이터만 삭제할 수 있다.
  • 테이블 구조나 데이터 정의는 영향을 받지 않는다.
  • 삭제 후에도 테이블에 데이터가 남아 있을 수 있다.

 

2. DROP

  • 테이블, 데이터베이스, 또는 다른 객체를 삭제하는 명령어다.
  • 이 명령어를 실행하면 해당 테이블이나 객체 자체가 삭제되고, 복구할 수 없다.
  • 테이블의 모든 데이터와 구조가 완전히 삭제되며, 관련된 모든 인덱스와 제약 조건도 함께 삭제된다.

 

3. TRUNCATE

  • 테이블의 모든 데이터를 삭제하는 명령어로, DELETE와 유사하지만 더 빠르다.
  • 데이터를 하나씩 삭제하지 않고, 테이블을 초기화하는 방식으로 동작한다.
  • 트랜잭션 로그에 적게 기록되므로 성능이 더 좋지만, 롤백이 불가능하며, 삭제된 데이터를 복구할 수 없다.
  • 테이블의 구조는 그대로 유지된다.

 


DELETE 기본 형식 (DELETE 사용 시 조건이 없으면 모든 행이 삭제됨)

DELETE FROM 테이블_이름 WHERE 조건;

 

 

 

DROP 기본 형식 (테이블 자체가 삭제됨)

DROP TABLE 테이블_이름;

 

 

TRUNCATE 기본 형식 (테이블은 남기고 모든 데이터 삭제)

TRUNCATE TABLE 테이블_이름;