📊 [SQL] 제39장 DELETE - 필요 없는 데이터는 어떻게 삭제할까요?
제39장. DELETE (1)
"필요 없는 데이터는 어떻게 삭제할까요?"
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- DELETE 문의 역할을 설명할 수 있다.
- 하나의 데이터를 삭제하는 SQL을 작성할 수 있다.
- WHERE 절과 함께 DELETE를 사용할 수 있다.
- DELETE를 사용할 때 주의할 점을 설명할 수 있다.
지금까지 우리는...
SQL를 배우면서
데이터를
읽고,
추가하고,
수정하는 방법을 배웠습니다.
| SQL | 역할 |
| SELECT | 데이터를 조회한다. |
| INSERT | 새로운 데이터를 추가한다. |
| UPDATE | 기존 데이터를 수정한다. |
그런데 데이터베이스를 사용하다 보면
더 이상 필요 없는 데이터도 생깁니다.
예를 들어
- 탈퇴한 회원
- 잘못 입력한 데이터
- 시험용 데이터
- 중복으로 저장된 데이터
이런 데이터는 어떻게 해야 할까요?
바로 DELETE를 사용합니다.
실생활에서 생각해 보기
학교 도서관에서
폐기된 도서를 목록에서 제거해야 합니다.
쇼핑몰에서는
실수로 등록한 상품을 삭제해야 합니다.
학생 관리 시스템에서는
잘못 입력한 학생 정보를 삭제해야 하는 경우도 있습니다.
이처럼
더 이상 필요하지 않은 데이터를 제거하는 작업이
DELETE입니다.
가장 기본적인 문법
DELETE FROM 테이블이름
WHERE 조건;
DELETE는
조건에 맞는 행(Row)을
테이블에서 제거합니다.
예제 1
CustomerID가 100인 고객을 삭제해 보겠습니다.
DELETE FROM Customers
WHERE CustomerID = 100;
실행 전
| CustomerID | CustomerName |
| 99 | Kim |
| 100 | Hong |
| 101 | Lee |
실행 후
| CustomerID | CustomerName |
| 99 | Kim |
| 101 | Lee |
CustomerID가 100인 행이
사라졌습니다.
SQL를 한 줄씩 살펴보기
DELETE FROM Customers
Customers 테이블에서
데이터를 삭제합니다.
WHERE CustomerID = 100;
CustomerID가 100인 행만 찾습니다.
찾은 행이 삭제됩니다.
그림으로 이해하기
Customers
↓
CustomerID = 100 찾기
↓
행(Row) 삭제
↓
저장 완료
UPDATE는
내용을 수정하지만,
DELETE는
행 자체를 제거합니다.
UPDATE와 DELETE의 차이
| 명령 | 결과 |
| UPDATE | 행은 그대로 있고 내용만 변경된다. |
| DELETE | 행 자체가 삭제된다. |
이 차이를 꼭 기억하세요.
실제 업무에서는?
DELETE는 다음과 같은 작업에 사용됩니다.
- 탈퇴 회원 삭제
- 시험 데이터 제거
- 중복 데이터 삭제
- 잘못 입력된 주문 삭제
- 오래된 로그 정리
하지만
실무에서는 UPDATE보다
DELETE를 훨씬 신중하게 사용합니다.
많이 하는 실수
실수 ①
WHERE를 작성하지 않는다.
DELETE FROM Customers;
이 SQL은
Customers 테이블의
모든 데이터를 삭제합니다.
테이블은 남아 있지만
모든 행(Row)이 사라집니다.
실수 ②
삭제할 데이터를 확인하지 않는다.
DELETE FROM Customers
WHERE Country = 'Germany';
독일 고객이
몇 명인지 확인하지 않고 실행하면
생각보다 많은 데이터가 삭제될 수도 있습니다.
실수 ③
DELETE와 DROP을 같은 것으로 생각한다.
DELETE는
행(Row)을 삭제합니다.
DROP은
테이블 자체를 삭제합니다.
DROP은
나중에 배우게 됩니다.
실무 습관
DELETE를 실행하기 전에 같은 조건으로 SELECT를 먼저 실행하세요.
예를 들어
SELECT *
FROM Customers
WHERE CustomerID = 100;
삭제할 데이터가 맞는지 확인합니다.
그 다음
DELETE FROM Customers
WHERE CustomerID = 100;
를 실행합니다.
실무에서는
이 순서를 거의 습관처럼 사용합니다.
한눈에 정리
| 목적 | SQL |
| 데이터 조회 | SELECT |
| 데이터 추가 | INSERT |
| 데이터 수정 | UPDATE |
| 데이터 삭제 | DELETE |
이번 장 핵심 정리
✅ DELETE는 행(Row)을 삭제하는 명령이다.
✅ 삭제할 대상을 WHERE로 선택한다.
✅ WHERE가 없으면 모든 데이터가 삭제된다.
✅ DELETE 전에 SELECT로 삭제 대상을 반드시 확인한다.
연습 문제
기본 문제
① CustomerID가 15인 고객을 삭제하는 SQL을 작성하시오.
② ProductID가 20인 상품을 삭제하는 SQL을 작성하시오.
응용 문제
① Country가 Brazil인 고객을 모두 삭제하는 SQL을 작성하시오.
② Price가 5 이하인 상품을 삭제하는 SQL을 작성하시오.
도전 문제
다음 SQL을 실행하면 어떤 일이 발생하는지 설명하시오.
DELETE FROM Customers;
정답
기본 문제
DELETE FROM Customers
WHERE CustomerID = 15;
DELETE FROM Products
WHERE ProductID = 20;
💡 실무 이야기
많은 초보 개발자는 DELETE를 "행을 하나 지우는 명령" 정도로 생각합니다.
하지만 실무에서는 DELETE는 가장 신중하게 사용하는 SQL 가운데 하나입니다.
예를 들어 고객 정보나 주문 내역을 실수로 삭제하면, 단순히 화면에 보이지 않는 것이 아니라 실제 데이터가 사라집니다. 백업이 없다면 복구가 매우 어렵거나 불가능할 수도 있습니다.
그래서 많은 회사에서는 DELETE를 실행하기 전에 다음과 같은 절차를 따릅니다.
- SELECT로 삭제 대상 확인
- COUNT(*)로 삭제될 행(Row) 수 확인
- 필요한 경우 백업 수행
- DELETE 실행
- 삭제 결과 확인
특히 중요한 데이터베이스에서는 DELETE 권한을 일부 관리자에게만 부여하는 경우도 많습니다.
✨ 다음 장 예고
다음 장에서는 DELETE와 WHERE를 더욱 다양하게 활용하는 방법을 배워 보겠습니다.
예를 들어
- 여러 행(Row)을 한 번에 삭제하기
- 다양한 조건을 이용하여 삭제하기
- DELETE 실행 후 영향을 받은 행(Row) 수 확인하기
등을 실습하면서 안전하게 데이터를 삭제하는 방법을 익히게 됩니다.