DELETE문을 사용하여 테이블에서 행 제거

테이블에서 행을 제거하려면 DELETE문을 사용합니다.

행을 삭제할 때 전체 행을 제거합니다. DELETE문은 행에서 특정 열을 제거하지 않습니다. DELETE문의 결과는 WHERE절에 지정된 탐색 조건을 충족하는 행 수에 따라 0개 이상의 테이블 행을 제거하는 것입니다. DELETE문에서 WHERE절을 생략하면, SQL은 테이블에서 모든 행을 제거합니다. DELETE문은 다음과 유사합니다.

   DELETE FROM table-name
     WHERE search-condition ...

예를 들어, 부서 D11이 다른 사이트로 이동된다고 가정합니다. 다음과 같이 WORKDEPT 값이 D11인 각각의 행을 CORPDATA.EMPLOYEE 테이블에서 삭제합니다.

   DELETE FROM CORPDATA.EMPLOYEE
     WHERE WORKDEPT = 'D11'

WHERE절은 테이블에서 삭제하려고 하는 행을 SQL에 알립니다. SQL은 탐색 조건을 충족하는 모든 행을 기본 테이블에서 삭제합니다. 뷰에서 행을 삭제하면 기본 테이블에서 행이 삭제됩니다. WHERE절을 생략할 수 있지만 포함시키는 것이 최선입니다. WHERE절이 없는 DELETE문은 테이블 또는 뷰에서 모든 행을 삭제하기 때문입니다. 테이블 정의와 테이블 내용을 삭제하려면 DROP문을 발행합니다.

SQL이 DELETE문을 실행하는 중에 오류를 발견하면 데이터 삭제를 중단하고 음수 SQLCODE를 리턴합니다. COMMIT(*ALL), COMMIT(*CS), COMMIT(*CHG) 또는 COMMIT(*RR)를 지정하는 경우 테이블의 어떤 행도 삭제되지 않습니다(이 명령문으로 이미 삭제된 행(있는 경우)은 이전 값으로 복원됨). COMMIT(*NONE)이 지정된 경우 이미 삭제된 행은 이전 값으로 복원되지 않습니다.

SQL이 탐색 조건을 충족하는 행을 찾을 수 없는 경우 +100 SQLCODE가 리턴됩니다.
참고: DELETE문이 두 개 이상의 행을 삭제하였을 수 있습니다. 삭제되는 행 수는 SQLCA의 SQLERRD(3)에 반영됩니다. 이 값은 GET DIAGNOSTICS문의 ROW_COUNT 진단 항목에서도 사용 가능합니다.