이 글에서는 SQL에서 자주 혼동되는 두 가지 명령어인 DELETE와 DROP의 차이점을 자세히 살펴보겠습니다. 두 명령어 모두 데이터를 제거하는 데 사용되지만, 작동 방식과 용도는 완전히 다릅니다. 각 명령어의 특징을 이해하면 상황에 맞게 올바르게 사용할 수 있습니다.
DELETE란?
테이블(관계)에서 일부 또는 전체 레코드(튜플)를 삭제합니다.
DML(Data Manipulation Language, 데이터 조작어)에 해당합니다.
'WHERE' 절을 사용하여 삭제할 대상을 필터링할 수 있습니다.
데이터 버퍼에서 작동하므로 트랜잭션 롤백(ROLLBACK)이 가능합니다.
'DELETE' 명령으로 모든 레코드를 삭제하더라도 테이블의 메모리 공간은 해제되지 않습니다.
대량의 데이터를 처리할 때 메모리 부족 현상이 발생할 수 있습니다.
DROP이란?
테이블, 제약 조건(constraint)과 같은 스키마의 명명된 요소나 스키마 전체를 제거합니다.
DDL(Data Definition Language, 데이터 정의어)에 해당합니다.
'WHERE' 절을 사용하지 않습니다.
데이터에 직접 작동하기 때문에 롤백이 불가능합니다.
메모리 공간을 즉시 해제합니다.
메모리 단편화(fragmentation)가 발생할 수 있습니다.
DELETE와 DROP 핵심 차이점 비교
| 구분 | DELETE | DROP |
|---|---|---|
| 명령어 분류 | DML (데이터 조작어) | DDL (데이터 정의어) |
| 제거 대상 | 테이블 내부의 레코드 | 테이블 또는 스키마 자체 |
| WHERE 절 사용 | 가능 | 불가능 |
| 롤백 가능 여부 | 가능 | 불가능 |
| 메모리 공간 해제 | 해제되지 않음 | 즉시 해제됨 |
사용 예시
-- DELETE 예시: 특정 조건에 맞는 레코드만 삭제
DELETE FROM employees WHERE department = 'Sales';
-- DROP 예시: 테이블 자체를 완전히 삭제
DROP TABLE employees;
정리하면, 특정 데이터만 선택적으로 제거하고 싶다면 DELETE를, 테이블 구조 자체를 데이터베이스에서 완전히 없애고 싶다면 DROP을 사용하는 것이 적절합니다. 특히 DROP은 되돌릴 수 없으므로 실행 전 반드시 백업 여부를 확인하는 것이 좋습니다.