프로젝트 할때 자주 데이터 삽입 과 데이터 수정을 자주 하게 됩니다.
그럴때 없는 데이터 같은경우는 INSERT(삽입)을 통해 데이터를 넣어주고 , 있을 경우에는
데이터 변경이 필요할때 UDPATE(수정)를 통해 작업을 해주는데 조건문을 통해 성립 할경우 와 안할경우
일반적인 IF문을 사용할때는 아래와 같이 써주게 됩니다.
------------------------------------------------------------------------------------------------- 하지만 MERGE INTO 문을 사용하게 되면 아래 와 같이 조건문으로 처리를 안해도 한 문장에 쿼리로 삽입 과 수정을 할 수있습니다. * MERGE INTO 예문 1 MERGE INTO USER_MASTER UM -- Table USING ( SELECT UI.USER_ID, UI.USER_NAME, UI. NO , UG.GROUP_NAME FROM USER_MASTER_IMPORT UI LEFT JOIN USER_GROUP UG ON UI.USER_ID = UG.USER_ID ) UI -- Target table ON (UM.USER_ID = UI.USER_ID) -- 대상테이블(Target table)과의 JOIN 조건 -- 조건이 일치할 경우 WHEN MATCHED THEN UPDATE SET USER_NAME = USER_MASTER_IMPORT.USER_NAME -- 일치하지 않을 경우(10G에서 사용이 안될 경우도 있습니다.) WHEN NOT MATCHED THEN INSERT (USER_ID, USER_NAME, NO , GROUP_NAME) --INSERT 시 INTO를 사용하지 않음에 주의 VALUES (UI.USER_ID, UI.USER_NAME, UI. NO , UI.GROUP_NAME) |
-------------------------------------------------------------------------------------------------
/* MERGE INTO 예문2 MERGE INTO TABLE_NAME TBL1 USING TARGET_TABLE TABL2 -- 동일한 테이블일 경우 TARGET_TABLE을 DUAL로 지정 ON TBL1.COLUMN_NAME = TABL2.COLUMN_NAME -- 두 테이블을 JOIN하는 조건문 WHEN MATCHED THEN --조건에 맞을 경우 UPDATE SET COL1 = VAL1 ,COL2 = VAL2 ,COL3 = VAL3 WHEN NOT MATCHED THEN --조건에 맞지 않을 경우 INSERT (COL1, COL2, COL3) VALUES (VAL1, VAL2, VAL3) |
'자기 개발 > Oracle' 카테고리의 다른 글
Tablespace 조회 및 용량 확장 (0) | 2014.06.05 |
---|---|
오라클 템프테이블 만들기 (0) | 2014.06.03 |
토드(Toda)에서 서로 다른 서버에 있는 테이블 생성 복사 (서로 다른 스키마) (0) | 2014.06.03 |
윈도우7 오라클 11g 삭제하기 (0) | 2013.11.06 |
REPLACE 지정문자를 다른것을로 대체할때 (공백제거용으로 썻음) (0) | 2013.11.05 |