본문 바로가기

SQL & 데이터베이스/SQL 기본 문법 & 오류

[SQL 기본 문법 & 오류] SQL DELETE 쿼리 사용법 및 주의점

[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 SELECT 문 사용법 및 주의점