DELETE 문을 사용하면 테이블의 기존 행을 삭제할 수 있다.

 

DELETE

FROM {table | view | subquery} [t_alias]

WHERE condition;

 

아래 쿼리는 t1 테이블에서 10번 부서를 삭제한다.

DELETE FROM T1 WHERE DEPTNO = 10;

 

아래는 T1 테이블을 조회한 결과다.

10번 부서가 삭제된 것을 확인할 수 있다.

 

SELECT * FROM T1;

 

아래 쿼리는 사원이 존재하지 않는 부서를 삭제한다.

 

DELETE

FROM T1 A

WHERE NOT EXISTS (SELECT 1 FROM EMP X WHERE X.DEPTNO = A.DEPTNO);

 

WHERE 절을 기술하지 않으면 테이블의 모든 행이 삭제된다.

 

DELETE FROM T1;

 

 

[실수 방지]

UPDATE 문과 DELETE 문은 수행하기 전에 갱신 또는 삭제할 행을 반드시 확인해야 한다.

먼저 SELECT 문을 작성하고, SELECT 문을 UPDATE 문이나 DELETE 문으로 변경하는 방식을 사용해야 실수를 방지할 수 있다.

 

아래 쿼리는 SELECT 문으로 갱신할 행과 값을 확인한 후, UPDATE 문으로 변경하는 과정을 보여준다.

강조한 부분을 변경하면 된다.

 

SELECT A.*

, (SELECT SUM (X.COMM)

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO)

FROM T1 A

WHERE EXISTS (SELECT 1

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO);

 

UPDATE T1 A

SET A.SAL = (SELECT SUM (X.SAL)

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO)

WHERE EXISTS (SELECT 1

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO);

 

DELETE 문도 SELECT 문으로 삭제할 행을 확인한 후 DELETE 문으로 변경하는 편이 바람직하다.

 

SELECT A.*

FROM T1 A

WHERE NOT EXISTS (SELECT 1

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO);

 

DELETE

FROM T1 A

WHERE NOT EXISTS (SELECT 1

FROM EMP X

WHERE X.DEPTNO = A.DEPTNO);

 

 

 

불친절한 SQL 프로그래밍저자정희락출판디비안(DBian)발매2018.09.10.

 

 

+ Recent posts