반응형
오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있습니다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있습니다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있습니다.
1. 동일한 테이블 구조를 가지고 있는 테이블로부터 데이터를 옮기는 쿼리
MERGE INTO TABLE1 T1
USING TABLE2 T2
ON (T1.COLUMN1 = T2.COLUMN1 AND T1.COLUMN2 = T2.COLUMN2)
WHEN MATCHED THEN
UPDATE SET T1.COLUMN3 = T2.COLUMN3
WHEN NOT MATCHED THEN
INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
VALUES (T2.COLUMN1, T2.COLUMN2, T2.COLUMN3)
2. 다른 테이블에서 데이터를 비교하여 가져오는 것이 아닌, 직접 값을 넣을 때
MERGE INTO TABLE1 T1
USING DUAL
ON (T1.COLUMN1 = 'A' AND T1.COLUMN2='B')
WHEN MATCHED THEN
UPDATE SET T1.COLUMN3 = 'C'
WHEN NOT MATCHED THEN
INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
VALUES ('A','B','C')
3. 업데이트나 입력 하나만 할 경우
- 존재하면 아무것도 하지 않고, 없으면 입력
MERGE INTO TABLE1 T1
USING DUAL
ON (T1.COLUMN1 = 'A' AND T1.COLUMN2='B')
WHEN NOT MATCHED THEN
INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
VALUES ('A','B','C')
반응형
'개발 > DB&SQL' 카테고리의 다른 글
[SQL] ORACLE CONNECT BY 사용법 (계층형 쿼리) (1) | 2024.11.13 |
---|---|
[SQL] Oracle 그룹 함수 (ROLLUP, CUBE, GROUPING 등) (0) | 2024.11.11 |
[Firebase] 데이터베이스 비교 (Realtime vs Cloud Firestore) (1) | 2024.10.04 |
[SQL] 여러 개 데이터를 1개의 행(Row)으로 출력하기 (Oracle, Mysql, PostgreSQL) (0) | 2024.06.29 |
[DB] 트랜잭션(Transaction)에 대해서 알아보기 (5) | 2023.01.23 |