반응형
안녕하세요 오늘은 Oracle의 Merge Into문에 대해서 알아보겠습니다.
흔히 특정 조건에 맞는 A테이블의 데이터를 B테이블로 update 한다거나,
아니면 데이터가 입력됬을때 특정 조건에 맞으면 update 아니면 insert 하는 식으로 구현할 수 있는 SQL입니다.
예제 상황
- A 테이블: A(id, name, age)
- B 테이블: B(id, name, age)
- 두 테이블의 id가 공통 키.
MERGE INTO B
USING A
ON (A.id = B.id)
WHEN MATCHED THEN
UPDATE SET
B.name = A.name,
B.age = A.age
WHEN NOT MATCHED THEN
INSERT (B.id, B.name, B.age)
VALUES (A.id, A.name, A.age);
- USING A:
- MERGE 문에서 기준 데이터를 제공할 테이블입니다. 여기서는 A 테이블이 기준입니다.
- ON (A.id = B.id):
- A.id와 B.id가 일치하는지 확인합니다.
- WHEN MATCHED THEN:
- 조건이 성립하는 경우(즉, A.id = B.id인 경우) UPDATE를 수행합니다.
- B.name과 B.age를 A.name과 A.age로 업데이트합니다.
- WHEN NOT MATCHED THEN:
- 조건이 성립하지 않는 경우(즉, A.id가 B.id에 없는 경우) INSERT를 수행합니다.
- A의 데이터를 B에 삽입합니다.
- 추가 사항 -
- MERGE 문은 데이터가 존재하면 업데이트하고, 필요에 따라 데이터를 삽입하거나 삭제할 수도 있습니다.
- USING 절의 ON부분에서 조건을 정의합니다.
결과적으로 다음과 같이 테이블의 내용이 변화됩니다.
감사합니다.
반응형
'Database' 카테고리의 다른 글
Oracle DELETE쿼리와 TRUNCATE차이는? (0) | 2024.11.29 |
---|---|
Oracle 무결성 제약조건 위배되었습니다- 부모 키가 없습니다 (0) | 2024.11.28 |
Oracle) 데이터 형식 VARCHAR2 -> CLOB로 변경하기 (0) | 2024.11.26 |
Oracle PL/SQL이란? (0) | 2024.11.23 |
규칙기반 옵티마이저와 비용기반 옵티마이저의 차이 (0) | 2024.03.03 |