2021. 4. 7. 11:21ㆍOracle 공부
이번에는 MERGE 에 대해서 알아 봅시다.
MERGE
merge 는 대상이 되는 테이블을 병합시키는데 사용이 됩니다.
즉. merge 의 대상이 되는 테이블을 A라고 하고, 병합시킬 테이블을 B하고 한다면 B테이블을 가지고 추가,수정,업데이트,삭제 등의 DML문을 사용하고, A라는 테이블에는 B테이블이 가지고 있는 데이터만 추가하는 그런 기능 입니다.
-------원형--------
MERGE INTO 타겟 엘리어스
USING (병합시킬 테이블의 데이터)
ON (두 테이블의 연결 조건)
WHEN MATCHED THEN (일치할 경우 수행할 작업)
WHEN NOT MATCHED THEN (일치하지 않을 경우 수행할 작업)
--------------------
먼저, 확인을 위해서 타겟이 될 테이블을 만들어 줍시다.
WHEN MATCHED THEN 에는 (수정 or 삭제) 할 코드를,
WHEN NOT MATCHED THEN 에는 (추가)를 써주면 됩니다.
위와 같이 사용을 해주면 되는데요,
좀 길죠...? 하나씩 봅시다.
MERGE INTO 에는 타겟이 되는 테이블과 엘리어스(별칭)이 오면 됩니다.
USING 에는 서브쿼리를 사용해서, 가져올 데이터들을 작성해주면 됩니다. ( *를 사용해 전부 가져와도 됩니다)
ON 에는 연결할 조건을 입력해주면 되는데, 보통 기본키를 사용합니다.
WHEN MATCHED THEN 에는 조건이 일치할 경우 실행할 코드를 적으면 되는데, UPDATE SET 을 사용해주면 됩니다.
타겟테이블.속성 = 병합할테이블.속성 으로 해주면 되며, 속성 하나만 써도 됩니다.
WHEN NOT MATCHED THEN 에는 조건이 일치하지 않을 경우 실행할 코드를 적으면 되는데, 데이터를 추가할 경우에는 INSERT VALUES 를, 삭제할 경우에는 DELETE 를 사용해주면 됩니다.
INSERT를 사용할 경우에, 특정 속성의 데이터만 바꿔줄 것이라면 INSERT 우측에 (속성)을 작성해 주어야 합니다.
모든 속성의 데이터를 바꿔줄 것이라면, INSERT 우측에 (속성)은 생략해도 됩니다.
※ 데이터를 추가할 경우. NOT NULL인 속성은 무조건 추가해주어야 합니다.
이렇게 MERGE에 대해서 알아 보았습니다.
MERGE는 당장 쓰거나 하진 않지만, 알아두면 언젠가 쓸일이 생긴다고 합니다.
고생하셨습니다.
'Oracle 공부' 카테고리의 다른 글
Day37 - DDL (테이블 생성, 테이블 변경, 테이블 삭제) (0) | 2021.04.07 |
---|---|
Day37 - TCL ( COMMIT, ROLLBACK, SAVEPOINT) (0) | 2021.04.07 |
Day36 - 행수정.UPDATE , 행삭제.DELETE (0) | 2021.04.06 |
Day36 - 행추가.INSERT , 테이블 복사.CTAS , 복구.ROLLBACK (0) | 2021.04.06 |
Day35 - 인라인 뷰 (0) | 2021.04.05 |