DELETE와 DROP, 핵심 차이 이해하기
데이터베이스를 운영하다 보면 불필요한 데이터나 테이블을 삭제해야 하는 상황이 자주 발생합니다. 이때 많은 개발자가 혼동하는 명령어가 바로 DELETE와 DROP입니다. 두 명령어 모두 '삭제'와 관련이 있지만, 실제로는 목적과 동작 방식이 완전히 다릅니다.
DELETE는 DML(Data Manipulation Language, 데이터 조작어)에 속하는 명령어로, 테이블에서 레코드(행)를 삭제하는 데 사용됩니다. WHERE 절을 활용하면 원하는 행만 선택적으로 제거할 수도 있습니다. 반면 DROP은 DDL(Data Definition Language, 데이터 정의어)에 속하며, 테이블·제약조건·스키마 전체와 같은 데이터베이스 구조 요소 자체를 제거할 때 사용합니다.
DELETE vs DROP 주요 차이점 비교표
| 번호 | 구분 기준 | DELETE | DROP |
|---|---|---|---|
| 1 | 목적 | 테이블에서 일부 또는 전체 레코드(행)를 삭제 | 테이블, 제약조건, 스키마 전체 등 스키마 객체를 제거 |
| 2 | 언어 분류 | DML(데이터 조작어) | DDL(데이터 정의어) |
| 3 | WHERE 절 | WHERE 절로 조건 필터링 가능 | WHERE 절 사용 불가 |
| 4 | 롤백(Rollback) | 데이터 버퍼를 통해 작동하므로 롤백 가능 | 데이터에 직접 작동하므로 롤백 불가 |
| 5 | 메모리 공간 | 모든 레코드를 삭제해도 테이블의 메모리 공간은 유지됨 | 명령 실행 시 메모리 공간이 즉시 해제됨 |
| 6 | 잠재적 문제 | 대량 삭제 시 메모리 부족 현상이 발생할 수 있음 | 잦은 사용 시 메모리 단편화를 유발할 수 있음 |
실전 사용 예시
두 명령어의 차이를 코드로 확인해 보겠습니다.
-- DELETE: '영업팀' 소속 직원 레코드만 삭제
DELETE FROM employees
WHERE department = 'Sales';
-- DROP: employees 테이블 자체를 삭제
DROP TABLE employees;위 예시에서 알 수 있듯이, DELETE는 조건에 맞는 데이터만 골라 제거하는 반면, DROP은 테이블 구조와 그 안의 모든 데이터를 한 번에 없애버립니다.
정리: 어떤 상황에서 무엇을 써야 할까?
단순히 특정 데이터만 지우고 싶다면 DELETE를, 테이블이나 객체 자체가 더 이상 필요 없다면 DROP을 사용하는 것이 올바른 선택입니다. 특히 DROP은 롤백이 어렵고 메모리 공간까지 회수되기 때문에, 실행 전 반드시 백업 여부와 영향 범위를 꼼꼼히 확인해야 합니다.