[DATABASE] DML - MERGE 함수
@욕심쟁이
·2020. 11. 18. 09:48
반응형
DML - MERGE 함수
- 테이블을 합치는 작업을 수행하는 문법
1. 문법
MERGE INTO table1 --데이터가 추가될 테이블
USING table2 --추가할 데이터가 있는 테이블
ON (병합 조건절)
WHEN MATCHED THEN
UPDATE SET 갱신내용
|DELETE WHERE 조건
WHEN NOT MATCHED THEN
INSERT VALUES (컬럼);
2. 예제
#1
CREATE TABLE p_01
(order_num VARCHAR2(8),
prod_num NUMBER,
AMOUNT NUMBER,
PRICE NUMBER);
#2
CREATE TABLE p_02
(order_num VARCHAR2(8),
prod_num NUMBER,
AMOUNT NUMBER,
PRICE NUMBER);
#3
CREATE TABLE p_total
(order_num VARCHAR2(8),
prod_num NUMBER,
AMOUNT NUMBER,
PRICE NUMBER);
3.데이터 추가
INSERT INTO p_01 VALUES ('20111301', 100, 1, 500);
INSERT INTO p_01 VALUES ('20111302', 105, 1, 400);
INSERT INTO p_01 VALUES ('20111303', 103, 1, 300);
INSERT INTO p_02 VALUES ('20111311', 100, 1, 400);
INSERT INTO p_02 VALUES ('20111312', 102, 1, 600);
INSERT INTO p_02 VALUES ('20111313', 104, 1, 800);
4. 예제 : p_01 테이블의 내용을 p_total 테이블에 병합
MERGE INTO p_total pt
USING p_01 p01 ON ( pt.order_num = p01.order_num )
WHEN MATCHED THEN UPDATE
SET pt.prod_num = p01.prod_num
WHEN NOT MATCHED THEN
INSERT
VALUES
( p01.order_num, p01.prod_num, p01.amount, p01.price );
5. 예제 : p_02 테이블의 내용을 p_total 테이블에 병합
MERGE INTO p_total pt
USING p_02 p02 ON ( pt.prod_num = p02.prod_num )
WHEN MATCHED THEN UPDATE
SET pt.price = p02.price
WHEN NOT MATCHED THEN
INSERT
VALUES
( p02.order_num, p02.prod_num, p02.amount, p02.price );
SELECT *
FROM p_total;
반응형
'IT > DB' 카테고리의 다른 글
[DATABASE] IN/SOME/ANY/ALL/EXISTS 함수 (0) | 2020.11.18 |
---|---|
[DATABASE] 그룹함수I [ROLLUP/CUBE/GROUPING SETS/LISTAGG] (0) | 2020.11.18 |
[DATABASE] CASE / DECODE / 조건 선택문 (0) | 2020.11.11 |
[DATABASE] 집합연산자란? (0) | 2020.11.11 |
[DB] Mac에서 Mysql : mysql-u root -p가 안될때 (0) | 2020.09.26 |