Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL DELETE와 DROP의 차이점: 목적부터 롤백까지 완벽 비교

DELETE와 DROP, 핵심 차이 이해하기

데이터베이스를 운영하다 보면 불필요한 데이터나 테이블을 삭제해야 하는 상황이 자주 발생합니다. 이때 많은 개발자가 혼동하는 명령어가 바로 DELETEDROP입니다. 두 명령어 모두 '삭제'와 관련이 있지만, 실제로는 목적과 동작 방식이 완전히 다릅니다.

DELETE는 DML(Data Manipulation Language, 데이터 조작어)에 속하는 명령어로, 테이블에서 레코드(행)를 삭제하는 데 사용됩니다. WHERE 절을 활용하면 원하는 행만 선택적으로 제거할 수도 있습니다. 반면 DROP은 DDL(Data Definition Language, 데이터 정의어)에 속하며, 테이블·제약조건·스키마 전체와 같은 데이터베이스 구조 요소 자체를 제거할 때 사용합니다.

DELETE vs DROP 주요 차이점 비교표

번호구분 기준DELETEDROP
1목적테이블에서 일부 또는 전체 레코드(행)를 삭제테이블, 제약조건, 스키마 전체 등 스키마 객체를 제거
2언어 분류DML(데이터 조작어)DDL(데이터 정의어)
3WHERE 절WHERE 절로 조건 필터링 가능WHERE 절 사용 불가
4롤백(Rollback)데이터 버퍼를 통해 작동하므로 롤백 가능데이터에 직접 작동하므로 롤백 불가
5메모리 공간모든 레코드를 삭제해도 테이블의 메모리 공간은 유지됨명령 실행 시 메모리 공간이 즉시 해제됨
6잠재적 문제대량 삭제 시 메모리 부족 현상이 발생할 수 있음잦은 사용 시 메모리 단편화를 유발할 수 있음

실전 사용 예시

두 명령어의 차이를 코드로 확인해 보겠습니다.

-- DELETE: '영업팀' 소속 직원 레코드만 삭제
DELETE FROM employees
WHERE department = 'Sales';

-- DROP: employees 테이블 자체를 삭제
DROP TABLE employees;

위 예시에서 알 수 있듯이, DELETE는 조건에 맞는 데이터만 골라 제거하는 반면, DROP은 테이블 구조와 그 안의 모든 데이터를 한 번에 없애버립니다.

정리: 어떤 상황에서 무엇을 써야 할까?

단순히 특정 데이터만 지우고 싶다면 DELETE를, 테이블이나 객체 자체가 더 이상 필요 없다면 DROP을 사용하는 것이 올바른 선택입니다. 특히 DROP은 롤백이 어렵고 메모리 공간까지 회수되기 때문에, 실행 전 반드시 백업 여부와 영향 범위를 꼼꼼히 확인해야 합니다.