오라클 DML명령어 ( MERGE 병합 )
- DB/오라클
- 2020. 9. 15.
MERGE
여러 테이블이 있고 테이블 A에 테이블 B,C,D.... 등 에 있는 값들을 넣거나 그 값들로 변경을 하고 싶을때 병합을
사용할 수 있는데 그때 사용하는 문법이 MERGE이다.
create table product1(
product varchar(10),
class varchar(10),
price number,
primary key(product, class)
);
create table product2(
product varchar(10),
class varchar(10),
dml varchar(10),
price number,
primary key(product, class)
);
insert into product1 values ('사과', '과일', 1000);
insert into product1 values ('바나나', '과일', 2000);
insert into product1 values ('연필', '학용품', 3000);
insert into product1 values ('셔츠', '의류', 10000);
insert into product1 values ('바지', '의류', 15000);
insert into product2 values ('사과', '과일', '삭제', 1000);
insert into product2 values ('지우개', '학용품', '추가', 3000);
insert into product2 values ('셔츠', '의류', '수정', 20000);
insert into product2 values ('바지', '의류', '수정', 25000);
product1,2 테이블 두개를 만들고 값을 넣어보자
merge into product1 p1 --대상테이블 p1
using product2 p2 -- 소스 테이블
on(p1.product = p2.product and p1.class = p2.class) -- 주고싶은 조건 (and를 사용해 여러개 사용가능)
when matched then -- 같을경우 이게 실행
update set p1.price = p2.price -- 조건이 맞을경우 사용될 명령어들
delete where p2.dml = '삭제'
when not matched then -- 같지 않을경우 이게 실행
insert values (p2.product, p2.class, p2.price); -- 같지 않을경우 사용될 명령어
1. merge into [수정할테이블 별칭] ( 변경하거나 추가가 될 테이블 )
2. using [사용될테이블 별칭] (원본 소스 테이블)
3. on ( 조건 )
4. when matched then ( if문과 같이 조건이 맞다면 아래 명령들이 실행 )
5. DML 명령어
6. when not matched then ( else if문과 같이 위의 조건이 맞지 않을경우 실행 )
7. DML 명령어
'DB > 오라클' 카테고리의 다른 글
[오라클] SELECT 데이터 조회#3 ( ORDER BY 정렬 , 집합연산자) (0) | 2020.09.15 |
---|---|
[오라클] SELECT 데이터 조회#1 (0) | 2020.09.15 |
[오라클] DDL #임시테이블 , 가상컬럼 (0) | 2020.09.14 |
[오라클] 관계 ( KEY ) (0) | 2020.09.14 |
[오라클] 복합 뷰 ( Complex VIEW ) (0) | 2020.09.14 |