본문 바로가기

오라클/테이블

서브쿼리를 이용한 여러개의 행에 데이터 추가하기

-- 서브쿼리를 이용하여 한번에 여러개의 행 추가(테이블이 존재햐아 함)

  -- INSERT INTO 테이블명[(컬럼, 컬럼)] subquery;

ex )

  --insa 테이블의 num, name, buseo의 구조만 복사(insa1 테이블 생성)

  CREATE TABLE insa1 AS SELECT num, name, buseo FROM insa WHERE 1=0;


  INSERT INTO insa1 SELECT num, name, buseo FROM insa WHERE buseo='개발부';

=> insa테이블에서 num,name,buseo 컬럼의 데이터를 가져온다. buseo가 개발부인 데이터만.

  INSERT INTO insa1(num,name,buseo) SELECT num, name, buseo FROM insa WHERE buseo='영업부';

=> 괄호안에 있는 컬럼들의 순서대로 서브쿼리의 컬럼 순서대로 데이터를 가져온다.  buseo가 영업부인 데이터만.

위 아래 쿼리가 다르지만 실행결과에 차이가 없는 것은 이미 만들어논 테이블의 구조가 insa테이블에 만들어 놓은 컬럼순서가 동일하기 때문이다.


  

  -- 서브쿼리를 이용하여 하나의 INSERT 문으로 여러개의 테이블에 자료 추가

  INSERT ALL

    INTO test2 VALUES (num,name,birth,memo,created )

    INTO test3(num, name,birth, created) VALUES (num, name,birth, created)

  SELECT * FROM test1;


  INSERT ALL

    WHEN num > 3 THEN

      INTO test4 VALUES(num,name,birth,memo,created)

    WHEN num <= 3 THEN

      INTO test5 VALUES (num,name,birth,memo, created)

  SELECT * FROM test1;