[Oracle] 오라클 DELETE 방법 & 노하우 정리 (데이터 삭제)

오라클에서 테이블의 데이터를 삭제하기 위해서는 DELETE 문을 사용하면 된다. WHERE 절의 조건에 해당하는 모든 데이터가 삭제된다. 조건에 맞는 데이터가 여러 개인 경우 모두 삭제되니 주의해서 사용해야 한다. DELETE 문이 수행된 이후 COMMIT 되면 복구가 쉽지 않다. Flashback을 활용하여 일부 데이터를 복구할 수도 있으니 아래를 참고하면 된다.

 

오라클 DELETE 문

기본 사용법

DELETE 
  FROM emp
 WHERE empno = 7788

 

emp 테이블에서 empno의 값이 7788인 데이터를 삭제한다.

 

DELETE emp
 WHERE job = 'ANALYST'
   AND deptno = 20

 

FROM 키워드를 생략해도 DELETE 문은 정상적으로 수행된다. 되도록이면 FROM 키워드를 생략하지 않고 작성하는 것을 권장한다. 

 

DELETE 
  FROM (SELECT a.empno
             , b.dname
          FROM emp a
             , dept b
         WHERE a.job = 'ANALYST'
           AND a.deptno = b.deptno)
 WHERE empno = 7788

 

테이블 대신 서브쿼리를 사용하여 DELETE 문을 작성할 수 있으며, emp 테이블에서 empno의 값이 7788인 데이터가 삭제된 것을 확인할 수 있다.

 

WHERE 절에 IN, EXISTS 활용법

DELETE 
  FROM emp
 WHERE empno IN (SELECT aa.empno
                   FROM emp_man aa)

 

서브쿼리를 사용하여 삭제할 empno 값을 가져온다.

 

DELETE 
  FROM emp a
 WHERE EXISTS (SELECT 1
                 FROM emp_man aa
                WHERE aa.empno = a.empno)

 

서브쿼리에서 해당 empno가 존재하면 데이터를 삭제한다.

 

DELETE 
  FROM emp a
 WHERE NOT EXISTS (SELECT 1
                     FROM emp_man aa
                    WHERE aa.empno = a.empno)

 

서브쿼리에서 해당 empno가 존재하지 않으면 데이터를 삭제한다.

 

실수 방지 팁


 

DELETE 문을 수행하기 전에 SELECT 문으로 해당 조건을 미리 조회 후 삭제 작업을 진행하면 실수를 조금이나마 방지할 수 있다.

 

삭제한 데이터를 복구하고 싶다면 아래를 참고하면 된다.

 

[Oracle] 오라클 실수로 지운 데이터 복구 쿼리 (TIMESTAMP)

데이터를 실수로 삭제(DELETE) 또는 수정(UPDATE)을 하고 COMMIT을 했다면 당황하지 말고 TIMESTAMP를 사용하여 이전의 데이터를 조회하여 복구할 수 있다. 오라클 9i Release 2부터 Flashba..

gent.tistory.com

 

[Oracle] 오라클 MERGE INTO 사용법 및 노하우 정리

오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있다. 오라클 9i부터 MERGE

gent.tistory.com

 

 

댓글

Designed by JB FACTORY