[SQL] 데이터베이스 TRUNCATE, DELETE, DROP 차이점

TRUNCATE, DELETE, DROP는 데이터베이스 테이블에서 삭제를 수행할 수 있는 작업이지만 각 작업에는 차이점이 있습니다. TRUNCATE, DELETE, DROP 차이점을 알아보겠습니다.
 
 

DELETE

DELETE 명령은 테이블에서 하나 이상의 행을 제거하는 데 사용됩니다.
DELETE 명령을 사용하면 데이터만 제거되고 테이블 구조는 변경되지 않습니다. 테이블에서 특정 행을 제거하되 나머지 데이터는 그대로 유지하려는 경우에 사용합니다.

DELETE FROM employees WHERE department = 'IT';

 
 

TRUNCATE

TRUNCATE 명령은 테이블 구조를 유지하면서 테이블에서 모든 행을 제거하는 데 사용됩니다.
TRUNCATE 명령을 사용하면 테이블의 모든 데이터가 삭제되지만 테이블 구조는 그대로 유지됩니다. TRUNCATE 명령은 삭제되는 각 행을 기록하지 않고 테이블의 자동 증가 값이 있는 경우 재설정하기 때문에 DELETE 명령보다 데이터를 빠르게 삭제할 수 있습니다.

TRUNCATE TABLE employees;

 
 

DROP

DROP 명령은 데이터베이스에서 테이블을 완전히 제거하는 데 사용됩니다.
DROP 명령을 사용하면 테이블의 모든 데이터가 삭제되고 테이블 구조가 삭제됩니다. 이 작업은 영구적인 작업이며 실행 취소할 수 없으므로 주의해서 사용해야 합니다.

DROP TABLE employees;

이러한 명령의 주요 차이점은 데이터 제거 수준입니다.
DELETE는 특정 데이터 행을 제거하며, TRUNCATE는 테이블의 모든 데이터를 제거하며 DROP은 전체 테이블과 해당 데이터를 모두 제거합니다.
테이블에서 모든 데이터를 삭제해야 하고 복구할 필요가 없는 경우 TRUNCATE가 더 빠르고 효율적인 옵션입니다.
그러나 특정 행을 제거하거나 데이터를 복구해야 하는 경우에는 DELETE가 더 나은 옵션입니다.
 
 

대량 데이터를 삭제할 때는?

예를 들어 100,000개 이상의 대량의 테이블 데이터를 삭제해야 하는 경우 가장 좋은 옵션은 TRUNCATE 명령을 사용하는 것입니다.
TRUNCATE는 개별 행에 대한 삭제를 기록하지 않기 때문에 DELETE보다 빠릅니다. 또한 TRUNCATE는 트리거나 제약 조건을 트리거하지 않으므로 많은 양의 데이터를 처리할 때 성능을 더욱 향상시킬 수 있습니다.

 

그러나 TRUNCATE는 되돌릴 수 없는 작업이므로 명령을 실행하기 전에 올바른 테이블 이름을 사용하고 있는지 다시 한 번 확인해야 합니다! 또한 나중에 데이터를 복구해야 하는 경우를 대비하여 작업을 수행하기 전에 테이블 데이터를 백업해야 합니다.