[SQL] DELETE 쿼리 사용법 및 주의점
1. DELETE 문이란?
DELETE 문은 SQL에서 데이터를 삭제할 때 사용되는 명령어입니다.
주어진 조건을 만족하는 행을 삭제하며, ROLLBACK이 가능한 트랜잭션 내에서 실행됩니다.
2. DELETE 기본 사용법
테이블에서 특정 조건을 만족하는 데이터를 삭제할 수 있습니다.
DELETE FROM 테이블명 WHERE 조건;
예를 들어, employees
테이블에서 특정 ID를 가진 직원을 삭제하려면 다음과 같이 실행합니다.
DELETE FROM employees WHERE employee_id = 101;
✅ **위 DELETE 문이 실행되면 employee_id가 101인 행이 삭제됩니다.**
3. DELETE 실행 후 결과 확인
DELETE 실행 후 영향을 받은 행 수를 확인할 수 있습니다.
DELETE FROM employees WHERE department_id = 10;
SELECT COUNT(*) FROM employees WHERE department_id = 10;
만약 department_id = 10
인 행이 5개였다면, DELETE 실행 후 결과는 **0**이 됩니다.
4. DELETE 사용 시 주의점
주의할 점 | 설명 | 해결 방법 |
---|---|---|
1. WHERE 절 없이 실행 시 모든 데이터 삭제 | DELETE 문에서 WHERE 조건을 생략하면 전체 테이블의 데이터가 삭제됨. | 항상 WHERE 절을 명확히 설정 후 실행 |
2. DELETE는 AUTO_INCREMENT 리셋 불가 | DELETE는 행을 삭제하지만, AUTO_INCREMENT 값은 초기화되지 않음. | 필요 시 TRUNCATE TABLE 사용 |
3. 트랜잭션 적용 가능 여부 | DELETE는 트랜잭션이 적용되며, ROLLBACK 가능 | 안전하게 삭제하려면 트랜잭션을 활용 |
4. 성능 문제 | 대량 데이터 삭제 시 성능 저하 발생 가능 | 인덱스 활용, 배치 삭제, 파티션 활용 |
5. DELETE와 TRUNCATE의 차이
구분 | DELETE | TRUNCATE |
---|---|---|
삭제 방식 | 조건에 맞는 행만 삭제 가능 | 테이블의 모든 행 삭제 |
ROLLBACK 가능 여부 | 가능 | 불가능 |
속도 | 느림 (한 행씩 삭제) | 빠름 (구조 자체를 초기화) |
AUTO_INCREMENT 초기화 | 유지됨 | 초기화됨 |
6. DELETE 실행 후 ROLLBACK 예제
BEGIN;
DELETE FROM employees WHERE department_id = 10;
-- 삭제된 데이터 복구
ROLLBACK;
📌 정리:
- DELETE는 WHERE 조건이 없으면 전체 데이터 삭제 주의
- 트랜잭션을 활용하여 안전하게 데이터 삭제
- 대량 데이터 삭제 시 성능 저하 문제를 고려해야 함
- TRUNCATE는 DELETE보다 빠르지만 ROLLBACK 불가능
🔗 다른 SQL 관련 글도 함께 확인해보세요!
'SQL & 데이터베이스 > SQL 기본 문법 & 오류' 카테고리의 다른 글
[SQL] SQL 조인(JOIN) 최적화 기법과 성능 고려 사항 (0) | 2025.03.15 |
---|---|
[SQL] SQL 조인(JOIN) 최적화 기법과 성능 (0) | 2025.03.14 |
[SQL] VIEW(뷰) 개념과 활용 방법 - 성능 최적화 및 관리 팁 (0) | 2025.03.13 |
[SQL] 서브쿼리(Subquery) 개념 및 활용 방법 (3) | 2025.03.12 |
[SQL] INNER JOIN vs OUTER JOIN 차이 및 활용법 (0) | 2025.03.12 |