Database
Database - Chapter 3-17. SQL (DML) 기초(데이터 제거)
Chansman
2025. 3. 20. 14:48
🚀 SQL 데이터 삭제(DELETE) 완벽 가이드
SQL에서 데이터를 삭제하는 방법을 기본적인 DELETE 문부터 고급 활용까지 정리했습니다. 🎯
이 글을 통해 안전하고 효율적인 데이터 삭제 방법을 익혀보세요!
📌 1. 기본적인 데이터 삭제 (DELETE FROM)
🔹 개념
- DELETE 문은 테이블에서 특정 데이터를 삭제하는 SQL 명령어입니다.
- WHERE 절을 사용하여 특정 조건을 만족하는 데이터만 삭제할 수 있습니다.
✅ 테이블의 모든 데이터 삭제
sql
DELETE FROM users;
✅ 설명
- users 테이블의 모든 데이터를 삭제합니다.
- 주의! WHERE 절 없이 실행하면 모든 데이터가 삭제되므로 신중하게 사용해야 합니다.
💡 모든 데이터 삭제 대신 테이블을 초기화하려면 TRUNCATE 사용
sql
TRUNCATE TABLE users;
- DELETE는 각 행을 개별적으로 삭제하지만, TRUNCATE는 테이블을 빠르게 초기화함
📌 2. 특정 조건을 만족하는 데이터 삭제
🔹 개념
- WHERE 절을 사용하여 특정 조건을 만족하는 데이터만 삭제할 수 있습니다.
✅ 나이가 18 미만인 사용자 삭제
sql
DELETE FROM users WHERE age < 18;
✅ 설명
- age가 18 미만인 사용자만 삭제
📌 3. 특정 개수만 삭제 (LIMIT 사용)
🔹 개념
- LIMIT을 사용하면 삭제할 개수를 제한할 수 있습니다.
✅ 취소된 주문 중 상위 100개만 삭제
sql
DELETE FROM orders WHERE status = 'canceled' LIMIT 100;
✅ 설명
- status가 'canceled'인 주문 중 상위 100개만 삭제
💡 대량 데이터를 삭제할 때는 한 번에 삭제하지 않고 LIMIT을 활용하여 나눠서 삭제하는 것이 안전함
📌 4. 다른 테이블과 조인하여 데이터 삭제 (JOIN 사용)
🔹 개념
- JOIN을 사용하면 다른 테이블과의 관계를 고려하여 특정 데이터를 삭제할 수 있습니다.
✅ 마케팅 부서에 속한 직원 삭제
sql
DELETE e FROM employees AS e
JOIN departments AS d ON e.department_id = d.id
WHERE d.name = 'Marketing';
✅ 설명
- departments 테이블과 employees 테이블을 조인(JOIN)
- Marketing 부서에 속한 직원들 삭제
📌 5. USING을 사용한 삭제
🔹 개념
- USING을 사용하면 다른 테이블과 조인하여 데이터를 삭제할 수 있습니다.
- JOIN과 유사하지만, MySQL에서 삭제할 테이블을 더 명확하게 지정할 수 있음
✅ HR 부서에 속한 직원 삭제
sql
DELETE FROM employees
USING employees, departments
WHERE employees.department_id = departments.id AND departments.name = 'HR';
✅ 설명
- departments 테이블과 연결된 employees 테이블에서 HR 부서에 속한 직원 삭제
📌 6. 삭제한 데이터 반환 (RETURNING 사용)
🔹 개념
- RETURNING을 사용하면 삭제된 데이터를 확인할 수 있음
- PostgreSQL에서 지원하는 기능
✅ 나이가 65 이상인 사용자 삭제 후 반환
sql
DELETE FROM users WHERE age > 65 RETURNING *;
✅ 설명
- age가 65 초과인 데이터를 삭제하고 삭제된 데이터를 반환
💡 PostgreSQL에서만 지원되는 기능이며, MySQL에서는 SELECT로 미리 데이터를 확인 후 삭제하는 방식 사용