반응형


안녕하세요~


오늘은 다중 INSERT문에 대해 알아보겠습니다.


사용법을 알아보기 전 의미를 알아볼까요?


다중 INSERT문이란?


데이터를 입력할 때 여러 개의 테이블에

동시에 데이터를 입력할 수 있게 해주는 INSERT문입니다.



다중 테이블 INSERT 구문:



         INSERT [ALL | FIRST]

               [WHEN condition THEN] 

                        [insert_into_clause values_clause]

               [ELSE] [insert_into_clause values_clause]

        (subquery)



우선 공통적으로 INSERT ... SELECT 문을 사용하여 행을

단일 DML 문의 일부로 다중 테이블에 삽입합니다.



다중 INSERT 문의 종류는 4가지로 나눌 수 있습니다.



      1. 무조건 ALL INSERT 문: ALL into_clause


      2. 조건부 ALL INSERT 문: conditional_insert_clase


      3. 조건부 FIRST INSERT 문: FIRST conditional_insert_clase


      4. PIVOTING INSERT 문

           (pivot함수를 사용하지 않고 pivot의 효과를 냄)

 



예제를 통해 알아봅시다!


우선 이미 고객 테이블이 존재한다고 가정합시다.


[ 고객 테이블 ]


고객이름

 나이

  주소 

 총구매액

 추천인

 A

 24

 서울

 30000

 null

 B

 29

 서울

 10000

 A

 C

 26

 파주

 25000

 A

 D

 31

 제주

 1000

 B

 E

 19

 null

 15000 C



예제1.

주소가 서울인 사람과 파주인 사람, 제주인 사람을

각각 고객_서울, 고객_파주, 고객_제주 테이블에 한번에 입력하세요.

(단, 고객_서울, 고객_파주, 고객_제주 테이블은 이미 존재한다고 가정)



앞서 사용한 SQL문이 바로 조건부 ALL INSERT 문입니다.




예제2.

우리의 타겟 고객은 20-30대이다.


나이가 30 이상 39 이하인 고객은 고객_30 테이블에,

나이가 20 이상 29 이하인 고객은 고객_20 테이블에,

그외의 고객은 고객_예외 테이블에 한번에 입력하세요.

(여기서도 이미 각각의 테이블 구조는 존재한다고 가정)




첫 번째 WHEN 절이 TRUE로 평가되면 ORACLE 서버가 해당 INTO절을 실행합니다.

후속 WHEN 절에서는 위의 행을 건너뛰고 실행합니다.




예제3. 아래와 같은 테이블이 있다고 가정하자


[고객_나이]


주소

UNDER_30 

 UNDER_40

OTHER

 서울

 30000

 

 

 서울

 10000

 

 

 파주

 25000

 


 제주

 

 1000

 

 null

 

 

 15000

(Create 시 sql keyword 주의하기: 예, others)



pivoting insert문을 이용하여

나이대에 대한 정보(주소, 총구매액)를 테이블의 data로 만드세요

(고객2 테이블에 INSERT하세요)



무조건 INSERT ALL문으로 PIVOTING 작업을 하였습니다.

PIVOTING INSERT 문은 컬럼이 데이터가 되어 INSERT가 되는 구문입니다.



[결과]


 주소

 나이

 총구매액

 서울

 UNDER_30 

 30000 

 서울 

 UNDER_30  

 100000

 파주

 UNDER_30 

 25000

 제주

 UNDER_30

 (NULL)

 (NULL)

 UNDER_30

 (NULL)

 서울

 UNDER_40

 (NULL)

 서울

 UNDER_40

 (NULL)

 파주

 UNDER_40

 (NULL)

 제주

 UNDER_40

 1000

 (NULL)

 UNDER_40 (NULL)

 ...

 OTHER

 (NULL)



PIVOT를 모르면 여기에서


추가) PIVOTING은 데이터 분석을 위해 수집된 데이터가 엑셀형태일 경우

DB 에 저장해서 분석하고자 할 때 유용하게 사용할 수 있습니다





오늘은 여기까지!


내일 또 돌아올겠습니다. 


이 글이 도움되셨다면 아래 공감 꾹~ 

반응형

+ Recent posts