[sql] DELETE 쿼리를 사용하여 SQL에서 특정 범위의 데이터 삭제하기

DELETE 쿼리는 테이블에서 특정 조건을 만족하는 행을 삭제하는데 사용됩니다. DELETE 쿼리를 사용할 때는 WHERE 절을 사용하여 어떤 행을 삭제할 것인지 명확하게 지정해야 합니다. 그러나 조심해야할 것은 WHERE 절을 실수로 빼 먹을 경우 전체 테이블의 데이터가 삭제될 수 있다는 점입니다.

따라서 보다 안전한 방법으로는 subquery나 JOIN을 사용하여 특정 조건을 만족하는 행을 확인한 후에 DELETE를 실행하는 것이 좋습니다. 이를 통해 실수로 모든 데이터를 삭제하는 것을 방지할 수 있습니다.

예를 들어, 샘플 테이블 “employees”에서 “hire_date” 기준으로 2010년 이전에 입사한 직원들의 데이터를 삭제하고 싶다고 가정해 봅시다. 이 때, 하나의 쿼리를 사용하여 바로 삭제하는 대신, 먼저 subquery나 JOIN을 사용하여 해당 데이터가 올바르게 선택되는지 확인한 후에 DELETE 쿼리를 실행하는 것이 좋습니다.

DELETE FROM employees 
WHERE employee_id IN (
    SELECT employee_id 
    FROM employees 
    WHERE hire_date < '2010-01-01'
);

이러한 방식으로 DELETE 쿼리를 사용하여 SQL에서 특정 범위의 데이터를 안전하게 삭제할 수 있습니다.