DELETE 문을 사용하여 데이터 삭제하기
DELETE문을 사용하여 테이블에서 전체 행을 제거할 수 있습니다.
DELETE문은 WHERE절에 지정한 검색 조건을 만족시키는 행 수에 따라 테이블의 0개 이상의 행을 제거합니다. DELETE 문에서 WHERE 절을 생략하면, Db2 는 사용자가 지정한 테이블이나 뷰에서 모든 행을 제거합니다. 따라서, DELETE문은 주의해서 사용하십시오. DELETE문은 행에서 특정 컬럼을 제거하지 않습니다.
예제 DELETE 문
다음의 문장은 직원 번호가 000060인 NEWEMP 테이블의 각 행을 삭제합니다.
DELETE FROM NEWEMP
WHERE EMPNO = '000060';
다음 예제의 문이 PL/I 프로그램에 포함되어 있다고 가정합니다.
- 표 DSN8C10.EMP 에서 커서 C1 가 현재 위치한 행을 삭제합니다.
EXEC SQL DELETE FROM DSN8C10.EMP WHERE CURRENT OF C1; - DSN8C10.EMP 테이블에서 부서 E11 와 D21 에 대한 모든 행을 삭제합니다.
EXEC SQL DELETE FROM DSN8C10.EMP WHERE WORKDEPT = 'E11' OR WORKDEPT = 'D21'; - 직원 테이블 X에서 결근 횟수가 가장 많은 직원을 삭제합니다.
EXEC SQL DELETE FROM EMP X WHERE ABSENT = (SELECT MAX(ABSENT) FROM EMP Y WHERE X.WORKDEPT = Y.WORKDEPT); - 커서 CS1 가 10개의 행으로 구성된 행 집합 T1 에 있다고 가정하면, 행 집합에 있는 10개의 행을 모두 삭제합니다.
EXEC SQL DELETE FROM T1 WHERE CURRENT OF CS1; - 커서 CS1 가 10개의 행으로 구성된 테이블 T1 의 행 집합에 있다고 가정하고, 행 집합의 네 번째 행을 삭제합니다.
EXEC SQL DELETE FROM T1 WHERE CURRENT OF CS1 FOR ROW 4 OF ROWSET; - T1 COL2 열의 값이 INTA 배열의 카디널리티와 일치하는 경우, 테이블 의 행을 삭제합니다. 배열 INTA는 DELETE 문에서 CARDINALITY 함수의 인수로 지정됩니다.
CREATE TYPE INTARRAY AS INTEGER ARRAY[6]; CREATE VARIABLE INTA AS INTARRAY; SET INTA = ARRAY[1, 2, 3, 4, 5]; CREATE TABLE T1 (COL1 CHAR(7), COL2 INT); INSERT INTO T1 VALUES('abc', 10); DELETE FROM T1 WHERE COL2 = CARDINALITY(INTA); - T1 C2 열의 값이 10보다 큰 테이블 에서 3개의 행만 삭제합니다.
DELETE FROM T1 WHERE C2 > 10 FETCH FIRST 3 ROWS ONLY;