DDL

DROP TABLE : 테이블의 존재 자체를 삭제한다.

TRUNCATE TABLE : 테이블의 구조는 남기고, 내부 데이터만 모두 삭제한다.

  • TRUNCATE TABLE orders;를 실행하면 , orders 테이블 안의 모든 주문 데이터가 순식간에 사라진다. 하지만 orders라는 테이블의 구조(열, 제약 조건 등)은 그대로 남아있어서, 바로 새로운 데이터를 INSERT 할 수 있다.

  • 특징

    • DELETE FROM orders; (WHERE 절 없는 DELETE)와 결과적으로는 같아 보이지만, TRUNCATE가 훨씬 빠르다. DELETE는 한 줄씩 지우면서 삭제 기록을 남기는 반면, TRUNCATE는 테이블을 초기화하는 개념이라 내부 처리 방식이 더 간단하고 빠르다.

    • TRUNCATE는 AUTO_INCREMENT 값도 초기화한다. 만약 orders 테이블에 1000개의 주문이 있어서 다음 order_id가 1001일 차례였다면 , TRUNCATE 이후에는 다시 1부터 시작한다.

테스트 데이터를 모두 지우고 처음부터 다시 시작 -> TRUNCATE

테이블 자체가 더 이상 필요 없을 때는 DROP을 사용

참조 당하는 테이블은 DROP, TRUNCATE를 할 수 없다.

Last updated