다중 행 입력 - Conditional-First INSERT 예

 

*사용 예

-학생 테이블에서 2학년 이상의 학생을 검색하여 height_info 테이블에는 키가 170보다 큰 학생의 학번, 이름, 키를 입력하고 weight_info 테이블에는 몸무게가 70보다 큰 학생의 학번, 이름, 몸무게를 각각 입력하여라. 단, 키가 170보다 작고, 몸무게가 70보다 큰 학생은 weight_info 테이블만 입력한다.

 

SQL> INSERT FIRST

   2    WHEN height > 170 THEN

   3          INTO height_info VALUES (studno, name, height)

   4    WHEN weight < 70 THEN

   5          INTO weight_info VALUES (​studno, name, height)

   6    SELECT studno, name, height, weight

   7    FROM student

   8    WHERE grade >= '2' ;​

 

 

다중 행 입력 - Conditional-First INSERT 예

 

*weight_info, height_info 테이블 데이터 모두 삭제

SQL> DELETE FROM height_info;

10 행이 삭제되었습니다.

SQL> DELETE FROM height_info;

10 행이 삭제되었습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> SELETE * FROM height_info;

선택된 레코드가 없습니다.

SQL> SELETE * FROM weight_info;

선택된 레코드가 없습니다.

 

 

다중 행 입력 - Conditional-First INSERT

 

*Conditional-First INSERT 명령문

-서브쿼리의 결과 집합에 대해 WHEN 조건절에서 지정한 조건을 만족하는 첫번째 테이블에 우선적으로 입력하기 위한 명령문

-서브쿼리의 결과 집합중에서 조건을 만족하는 첫번째 WHEN절에서 지정한 테이블에만 입력하고 그외의 결과집합에서 나머지 WHEN절에 조건이 만족하면 첫번째 조건에 INSERT한 행을 제외하고 INSERT, 마지막에는 ELSE절에 정의된 TABLE에 INSERT

 

*사용법

INSERT FIRST

[WHEN 조건절1 THEN

INTO [table1] VLAUES[(column1, column2,...)]

[WHEN 조건절2 THEN

INTO [table2] VLAUES[(column1, column2,...)]

[ELSE

INTO [table3] VLAUES[(column1, column2,...)]

subquery;

 

 

다중 행 입력 - Conditonal INSERT ALL 예

 

*결과확인

다중 행 입력 - Conditional INSERT ALL 예

 

*사용 예

-학생 테이블에서 2학년 이상의 학생을 검색하여 height_info 테이블에는 키가 170보다 큰 학생의 학번, 이름, 키를 입력하고 weight_info 테이블에는 몸무게가 70보다 큰 학생의 학번, 이름, 몸무게를 각각 입력하여라.

 

SQL> INSERT ALL

    2    WHEN height > 170 THEN

    3          INTO height_info VALUES (studno, name, height)

    4    WHEN weight > 70 THEN

    5          INTO weight_info VALUES (studno, name, height)

    6    SELECT studno, name, height, weight

    7    FROM student

    8    WHERE grade >= '2';

 

10개의 행이 만들어졌습니다. 

 

 

다중 행 입력 - Conditional INSERT ALL 예

 

*weight_info, height_info 테이블 데이터 모두 삭제

SQL> DELETE FROM height_info;

10 행이 삭제되었습니다.

SQL> DELETE FROM height_info;

10 행이 삭제되었습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> SELECT * FROM height_info;

선택된 레코드가 없습니다.

SQL> SELECT * FROM height_info;

선택된 레코드가 없습니다.

 

 

 

다중 행 입력 - Conditional INSERT ALL

 

*사용법

INSERT ALL

[WHEN 조건절1 THEN

INTO [table1] VLAUES [(column1, column2, ...)]

[WHEN 조건절2 THEN

INTO [table2] VLAUES [(column1, column2, ...)]

[ELSE

INTO [table3] VLAUES [(column1, column2, ...)]

subquery;

 

*서브쿼리의 결과 집합 중에서 조건절1을 만족하는 결과 행은 table1에 입력, 조건절 2을 만족하는 결과 행은 table2에 입력, 그리고 어느 조건절도 만족하지 않는 행은 table3에 입력

 

 

다중 행 입력 - Conditional INSERT ALL

 

*Conditional INSERT ALL 명령문

-서브쿼리의 결과 집합에 대해 WHEN 조건절에서 지정한 조건을 만족하는 행을 해당되는 테이블에 각각 입력

-서브쿼리에서 검색된 행을 만족하는 조건이 여러 개 일 경우 해당 테이블에 모두 입력

-ALL : WHEN~THEN~ELSE의 조건을 만족하는 서브쿼리의 모든 검색 결과를 입력하기 위한 옵션

-WHEN 조건절 THEN : 서브쿼리의 결과 집합에 대한 비교 조건

 

+ Recent posts