SQL에서 데이터를 “삭제”할 때 가장 많이 헷갈리는 명령어가 DROP, DELETE, TRUNCATE다.
셋 다 지우는 명령어지만, 지우는 대상(구조 vs 데이터)과 범위(일부 vs 전체)가 완전히 다르다. 이 차이를 모르고 사용하면 테이블 자체를 날려버리는 사고가 발생할 수 있다.
한 번에 구분하기
DELETE → 데이터 일부/전체 삭제 (조건 가능)
TRUNCATE → 데이터 전체 삭제 (테이블 구조 유지)
DROP → 테이블 자체 삭제 (구조까지 삭제)
DELETE | 조건으로 일부 데이터 삭제
DELETE는 테이블 안의 데이터를 지우는 명령어다.WHERE 조건을 사용해서 특정 행만 삭제할 수 있다.
-- 특정 회원 한 명 삭제
DELETE FROM users
WHERE id = 1;
WHERE를 생략하면 모든 데이터가 삭제된다.
-- 전체 데이터 삭제 (위험)
DELETE FROM users;
특징
- 특정 데이터만 선택적으로 삭제 가능
- 트랜잭션/롤백(환경에 따라)으로 복구 가능
- 조건을 잘못 쓰면 대량 삭제 사고 발생
TRUNCATE | 데이터만 전체 초기화
TRUNCATE는 테이블 구조는 유지하고 데이터만 전체 삭제한다. 일종의 “초기화” 명령이다.
TRUNCATE TABLE users;
특징
- 모든 데이터 즉시 삭제 (WHERE 불가)
- 테이블 구조는 그대로 유지
- 보통 DELETE보다 빠름(대량 데이터 초기화)
- 롤백이 제한적이거나 불가한 경우 많음
👉 테스트 데이터 리셋할 때 많이 사용
DROP | 테이블 자체 삭제
DROP은 테이블 자체를 삭제한다. 데이터뿐 아니라 구조(컬럼, 인덱스 등)까지 전부 사라진다.
DROP TABLE users;
특징
- 테이블 + 데이터 모두 삭제
- 되돌리기 매우 어려움
- 가장 위험한 명령어
상황별 사용 기준
같은 “삭제”라도 상황에 따라 선택이 달라진다.
회원 한 명 탈퇴 → DELETE
테스트 데이터 초기화 → TRUNCATE
더 이상 안 쓰는 테이블 → DROP
SQL 코드 비교
-- DELETE (조건 삭제)
DELETE FROM users WHERE id = 1;
-- DELETE (전체 삭제)
DELETE FROM users;
-- TRUNCATE (전체 초기화)
TRUNCATE TABLE users;
-- DROP (테이블 삭제)
DROP TABLE users;
실수 방지 체크포인트
1. DELETE는 WHERE 조건 확인
DELETE FROM users;
👉 전체 삭제됨 (실수 1위)
2. DROP은 구조까지 삭제
DROP TABLE users;
👉 테이블 자체가 사라짐 (복구 어려움)
3. TRUNCATE는 되돌리기 어렵다
TRUNCATE TABLE users;
👉 빠르지만 롤백 제한
4. 운영 DB에서는 항상 백업 먼저
삭제 명령어 실행 전 → 백업 or 확인 필수
핵심 차이 한 번 더 정리
명령어 대상 범위 특징
| DELETE | 데이터 | 일부/전체 | WHERE 가능 |
| TRUNCATE | 데이터 | 전체 | 빠른 초기화 |
| DROP | 테이블 | 전체 | 구조까지 삭제 |
DELETE는 데이터를 지우고, TRUNCATE는 테이블을 초기화하며, DROP은 테이블 자체를 삭제한다.
'Data Analytics > SQL' 카테고리의 다른 글
| SQL INSERT와 SELECT 기본 정리 | 데이터 입력과 조회 흐름 이해하기 (0) | 2026.05.18 |
|---|---|
| SQL CREATE TABLE 정리 | 데이터베이스와 테이블 생성 기본 문법 (0) | 2026.05.15 |
| SQL DDL과 DML 차이 정리 | CREATE, SELECT, INSERT는 뭐가 다를까 (0) | 2026.05.15 |
| RDBMS란 무엇인가 | Table과 관계로 데이터를 관리하는 방식 (1) | 2026.05.14 |
| DB와 DBMS 차이 정리 | 데이터베이스를 처음 배울 때 헷갈리는 개념 (0) | 2026.05.14 |
