어흥

[Oracle] MERGE INTO 본문

Oracle

[Oracle] MERGE INTO

라이언납시오 2020. 8. 4. 15:57
728x90
반응형

1. MERGE INTO 사용 이유

- 한번에 INSERT, UPDATE를 처리하고 싶을 때 사용

 

즉,

  이미 존재하는 경우 : UPDATE

  존재하지 않는 경우: INSERT

 

2. 예시

[Table 2개를 비교할 때]

MERGE INTO EMPLOYEE E
USING(
	SELECT
    	ID
        ,USERNAME
        ,PNUM
        ,ADDRESS
        ,DEPTNO
	FROM NEW_EMPLOYEE
    WHERE HIREDATE>=TO_DATE('20200801','YYYYMMDD')
    	AND HIREDATE<=SYSDATE
) NE
ON(E.ID = NE.ID)
WHEN MATCHED THEN					//이미 존재하는 경우 UPDATE 수행
UPDATE
	SET
        E.USERNAME = NE.USERNAME
        ,E.PNUM = NE.PNUM
        ,E.DEPTNO = NE.DEPTNO
WHEN NOT MATCHED THEN				//존재하지 않는 경우 INSERT 수행
INSERT (
	ID
	,USERNAME
    ,PNUM
    ,ADDRESS
    ,DEPTNO
)
VALUES(
	NE.ID
	,NE.PNUM
    ,NE.ADDRESS
    ,NE.DEPTNO
)

 

[직접 값을 입력할 때]

MERGE INTO EMPLOYEE E
USING DUAL
ON(E.ID = '20200804')
WHEN MATCHED THEN					//이미 존재하는 경우 UPDATE 수행
UPDATE
	SET
        E.USERNAME = '홍길동'
        ,E.PNUM = '01011112222'
        ,E.DEPTNO = '23'
WHEN NOT MATCHED THEN				//존재하지 않는 경우 INSERT 수행
INSERT (
	ID
	,USERNAME
    ,PNUM
    ,ADDRESS
    ,DEPTNO
)
VALUES(
	'20200804'
    ,'홍길동'
    ,'01011112222'
    ,23'
)
728x90
반응형

'Oracle' 카테고리의 다른 글

[Oracle] Sequence  (0) 2020.07.22
[Oracle] Index  (0) 2020.07.09
[Oracle] Plan  (0) 2020.07.09
[Oracle] SQL (DDL, DML)  (1) 2020.07.07
Comments