✅ 1. DELETE 기본 문법
DELETE FROM 테이블명
WHERE 조건;
구성 요소설명
| DELETE FROM | 어떤 테이블에서 삭제할지 지정 |
| WHERE | 어떤 조건에 맞는 행(row)을 삭제할지 지정 |
✅ 2. 예제 테이블
MEMBER 테이블
MEM_ID MEM_NAME MEM_GRADE MEM_MILEAGE
| A101 | 김민지 | 일반 | 3000 |
| A102 | 박서준 | VIP | 8000 |
| A103 | 이지은 | 일반 | 4000 |
✅ 3. 예제들
🎯 예제 1: 특정 회원 한 명 삭제
DELETE FROM MEMBER
WHERE MEM_ID = 'A103';
→ A103 회원 한 명만 삭제됩니다.
🎯 예제 2: 일반 등급 회원 전부 삭제
DELETE FROM MEMBER
WHERE MEM_GRADE = '일반';
→ 일반 등급 회원 전체 삭제 (A101, A103 등)
⚠️ 예제 3: WHERE 절 없이 DELETE (주의!)
DELETE FROM MEMBER;
👉 테이블 전체 데이터가 삭제됩니다! 😱 (행은 모두 사라지지만 테이블 구조는 남음)
✅ 4. DELETE vs TRUNCATE vs DROP 비교

✅ 5. 서브쿼리를 사용한 DELETE
DELETE FROM MEMBER
WHERE MEM_ID IN (
SELECT MEM_ID
FROM MEMBER
WHERE MEM_GRADE = '일반'
);
→ 일반 등급 회원들 삭제 (IN 절이나 EXISTS 절 등 다양하게 응용 가능)
✅ 장바구니에서 수량이 0인 상품 삭제
DELETE FROM CART
WHERE CART_QTY = 0;
장바구니에 담았지만 수량이 0인 상품은 의미 없으니 삭제
✅ 30일 이상 로그인하지 않은 회원 삭제
DELETE FROM MEMBER
WHERE LAST_LOGIN < SYSDATE - 30;
마지막 로그인 날짜가 30일 이전인 회원들을 삭제 (휴면 처리나 정리 작업 시 사용)
✅ 다른 테이블 조건을 참조해서 삭제 (서브쿼리)
🎯 장바구니에 상품이 존재하지 않는 경우 삭제
DELETE FROM CART
WHERE PROD_ID NOT IN (
SELECT PROD_ID FROM PRODUCT
);
CART에 있는 상품이 PRODUCT 테이블에 없을 경우 삭제 (유령 데이터 제거)
✅ JOIN을 이용한 삭제 (Oracle 스타일)]
Oracle은 일반적으로 JOIN만으로 직접 DELETE 하긴 어렵지만, **EXISTS나 IN**을 통해 우회적으로 처리합니다.
🎯 VIP가 아닌 회원의 장바구니 삭제
DELETE FROM CART
WHERE MEM_ID IN (
SELECT MEM_ID FROM MEMBER
WHERE MEM_GRADE != 'VIP'
);
VIP가 아닌 회원들의 장바구니 데이터를 삭제
✅ 날짜 조건을 이용한 정기 정리
DELETE FROM LOG_HISTORY
WHERE LOG_DATE < ADD_MONTHS(SYSDATE, -6);
6개월이 지난 로그 기록을 삭제 (로그 테이블 정리용)
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-8] 숫자함수 (0) | 2025.04.11 |
|---|---|
| [Oracle D-8] 테이블 기본 용어? (?????해야하나??) (0) | 2025.04.10 |
| [Oracle D-6] 연산자 (0) | 2025.04.08 |
| [Oracle D-6] SELECT문 (0) | 2025.04.08 |
| [D-5] UPDATE 명령 (더써야함) (0) | 2025.04.07 |