홍카나의 공부방

[데이터베이스] 삭제 : DELETE vs DROP vs TRUNCATE 본문

Data Engineering/Database

[데이터베이스] 삭제 : DELETE vs DROP vs TRUNCATE

홍문관카페나무 2023. 5. 20. 11:43

DELETE... 삭젠데? 삭제... 삭제!

 

데이터베이스 삭제 명령어

DELETE, DROP, TRUNCATE 모두 DB에서 객체를 삭제하는 데 사용하는 명령어다.

하지만 각각의 명령어는 세세한 차이점을 가지고 있다.

 


 

쉽게 이해하는 그림

DELETE

DELETE 문은 테이블에서 특정 레코드를 삭제하는 데 사용하는 구문이다.

WHERE 절을 사용하여 특정 조건의 레코드를 삭제할 수도 있고, 모든 레코드를 삭제할 수도 있다.

DELETE된 데이터는 COMMIT(END) 명령어를 실행하기 이전에 ROLLBACK 명령어를 이용하여 복구할 수 있다.

위 사진에서 보는 것처럼, DELETE 이후 테이블 구조(필드의 정의, 도메인, 제약 조건 등)는 그대로 유지된다.

처리 속도는 TRUNCATE나 DROP문 보다 느리다.

 

DELETE FROM ex_table;
DELETE FROM ex_table WHERE {조건};
ROLLBACK;

 

TRUNCATE

테이블의 모든 레코드를 삭제하는 데 사용하는 구문이다.

TRUNCATE 문을 실행하면 테이블의 모든 레코드가 삭제되며, 자동 COMMIT이 되는 명령어라서 복구할 수 없다.

DROP 문과 차이점은 TRUNCATE는 Table의 레코드들만 모두 날리는 것이기 때문에 테이블 구조는 남아있다.

 

TRUNCATE TABLE ex_table;

 

DROP

데이터베이스에서 객체(테이블, 뷰, 인덱스 등)를 완전히 삭제할 때 사용하는 명령어다.

DROP TABLE ex_table;
DROP INDEX ix_index;
DROP VIEW ex_view;

삭제된 객체는 롤백이나 복구할 수 없으며, 삭제하기 전에 꼭 확인 절차를 거치는 것이 좋다.

DROP TABLE로 테이블 날려놓고 왜 INSERT INTO가 안되지..? 이러면 안 된다.

 

반응형