[Oracle] 오라클 INSERT ALL, 다중행 입력, 한방 쿼리
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... }
과 같다고 이해하면 빠를 듯..!