SQL DELETE 문 조건에 맞는 데이터 삭제 방법
DELETE 문은 데이터베이스 테이블에서 특정 조건에 맞는 레코드(데이터 행)를 삭제하는 SQL 명령어입니다. 실수로 잘못 사용하면 데이터가 모두 삭제될 수 있으므로 WHERE 절의 중요성을 반드시 이해하고 사용해야 합니다. 이 글에서는 DELETE 문의 기본 문법부터 실전 예제, DROP 문과의 차이점까지 자세히 설명드립니다.
1. DELETE 문 기본 문법
1.1. 특정 조건의 레코드 삭제
DELETE FROM 테이블이름
WHERE 조건;
예시
DELETE FROM Reservation
WHERE Name = '홍길동';
- WHERE 절을 사용하여 조건에 맞는 레코드만 삭제합니다.
1.2. 모든 레코드 삭제 (주의 필요)
DELETE FROM 테이블이름;
예시
DELETE FROM Reservation;
- 테이블 내의 모든 데이터가 삭제되며, 테이블 구조는 유지됩니다.
✅ 주의: WHERE 절 없이 DELETE를 실행하면 전체 데이터가 삭제됩니다.
2. DELETE 문 주요 특징
| 항목 | 설명 |
|---|---|
| 삭제 대상 | 특정 조건의 레코드 또는 전체 레코드 |
| 테이블 구조 | 유지됨 |
| 복구 가능성 | 일반적으로 복구 불가 (트랜잭션 사용 시 일부 복구 가능) |
| 실행 속도 | 조건 비교가 포함되므로 TRUNCATE나 DROP보다 느릴 수 있음 |
3. DELETE 문 실전 예제
3.1. 특정 필드 조건으로 삭제
DELETE FROM Customer
WHERE Address = '서울';
서울에 거주하는 고객 데이터를 삭제합니다.
3.2. 다중 조건으로 삭제
DELETE FROM Customer
WHERE Age = 17 AND Name = '홍길동';
나이가 17세이고 이름이 ‘홍길동’인 고객을 삭제합니다.
3.3. 모든 데이터 삭제 (테이블 초기화 용도)
DELETE FROM Customer;
Customer 테이블의 모든 데이터를 삭제합니다.
⚠ 복구 불가하므로 실행 전 꼭 백업 여부 확인!
4. DELETE vs. DROP vs. TRUNCATE 차이점
| 항목 | DELETE | DROP | TRUNCATE |
|---|---|---|---|
| 삭제 대상 | 레코드(데이터 행) | 테이블 전체 | 모든 레코드 |
| 테이블 구조 유지 | O | X | O |
| 복구 가능성 | X (일반적으로 불가) | X | X |
| 조건 삭제 가능 여부 | O | X | X |
| 속도 | 느림 (조건 검사) | 빠름 | 매우 빠름 |
🔍 DELETE는 유연하지만 느리고, DROP은 구조까지 삭제하며, TRUNCATE는 빠르지만 조건 지정이 불가능합니다.
5. DELETE 문 실행 후 검증하기
DELETE 문을 사용한 후에는 SELECT 문으로 삭제 결과를 꼭 확인하세요.
SELECT * FROM Customer;
✅ 변경 사항을 확인하고 예상대로 삭제되었는지 검증하는 습관이 중요합니다.
6. 요약 정리
| 기능 | 문법 예시 | 설명 |
|---|---|---|
| 특정 데이터 삭제 | DELETE FROM 테이블 WHERE 조건; |
조건을 만족하는 레코드만 삭제 |
| 전체 데이터 삭제 | DELETE FROM 테이블; |
모든 데이터 삭제, 구조는 유지 |
| 테이블 자체 삭제 | DROP TABLE 테이블; |
테이블 + 데이터 모두 삭제 |
| 삭제 후 확인 | SELECT * FROM 테이블; |
삭제 결과 검토 필수 |
질문 정리
- DELETE 문으로 삭제한 데이터는 복구할 수 있나요?
- 일반적으로 복구할 수 없습니다. 트랜잭션을 사용하면 복구가 가능할 수 있으나, 일반적인 환경에서는 백업이 없다면 복구는 어렵습니다.
- DELETE와 DROP 중 무엇을 사용해야 하나요?
- 데이터만 삭제하고 구조를 유지하고 싶으면
DELETE를, 테이블 자체를 제거하고 싶다면DROP을 사용하세요.
- 데이터만 삭제하고 구조를 유지하고 싶으면
- TRUNCATE와 DELETE 중 어느 것이 더 빠른가요?
TRUNCATE가 훨씬 빠르며, 로그 기록이 적기 때문에 속도에서 우위를 가집니다. 단, 조건 삭제는 불가능합니다.
- DELETE에 WHERE 절을 빼먹었는데 복구가 가능한가요?
- 일반적으로 불가능합니다. 실수 방지를 위해 항상 WHERE 절을 먼저 작성한 후 DELETE 문을 완성하는 습관을 들이세요.
- 삭제된 데이터 확인은 어떻게 하나요?
- DELETE 후
SELECT문으로 테이블을 조회하거나, 트랜잭션이 설정된 환경에서는ROLLBACK으로 복원할 수 있습니다.
- DELETE 후
댓글남기기