IT

[Oracle] 오라클 INSERT ALL, 다중행 입력, 한방 쿼리

정미나 2019. 5. 13. 13:00

INSERT ALL

- 한 테이블에 여러 row를 넣거나 여러 테이블에 하나의 명령어로 insert가 가능

Unconditional insert all : 조건없이 모두 insert

INSERT ALL
 
INTO CUST_TEL VALUES (CUST_NO, TEL_NO)
  INTO CUST_ADDR VALUES (CUST_NO, POST_NO, ADDR_1, ADDR_2)
SELECT CUST_NO, TEL_NO, POST_NO, ADDR_1, ADDR_2
  FROM CUSTOMER; 

 

Conditional insert all : 조건에 맞는 행들만 insert

INSERT ALL
  WHEN SALE_PRICE >= 1000000
  INTO HIGH_ORDER VALUES (ORDER_NO, GOODS_CODE, SALE_PRICE)
  WHEN SALE_PRICE < 1000000
  INTO LOW_ORDER VALUES (ORDER_NO, GOODS_CODE, SALE_PRICE)
  FROM ORDER
 WHERE ORDER_DT = '20190513'

 

INSERT ALL 대신에 INSERT FIRST를 사용하게 되면 한개의 조건에 만족할 경우 나머지 조건문은 skip하게 됨

다시말해 INSERT ALL 은

if(조건) { insert... }
if(조건) { insert... }
if(조건) { insert... }

과 같고

INSERT FIRST 는

if(조건) { insert... }
else if(조건) { insert... }
else if(조건) { insert... }

과 같다고 이해하면 빠를 듯..!