느림보 개발

4. 오라클 - MERGE문(1) 본문

데이터베이스

4. 오라클 - MERGE문(1)

@르르 2023. 5. 21. 18:04

MERGE문도 실무에 많이 활용되기 때문에 정리를 해보려고 한다. 

 

* MERGE

- 원본 테이블과 조인 결과를 기반으로 대상 테이블에서 INSERT, UPDATE, DELETE 작업을 수행하는 명령어 

- 한 문장으로 한 테이블 안에서의 데이터 변경이 가능하다. 

- 여러 테이블이 관여되어 있는 데이터 변경을 원한다면 사용하자! 

 

1. 기본 형태 

MERGE
   INTO 테이블1 T 
     USING 
     (테이블2의 SELECT문) S 
        ON 
        (T와 S의 조인 조건) 
      WHEN MATCHED THEN 
        (데이터 변경 실행문)

 

 

 

 

2. 예시 

[테이블1] 전체 학생 정보가 담긴 테이블 

CREATE TABLE STU (
     "이름" VARCHAR(20)
    ,"학과" VARCHAR(20)
    ,"나이" VARCHAR(20)
    ,"장학금명" VARCHAR(20)
);

INSERT INTO STU VALUES('이우연','연기과','23',NULL);
INSERT INTO STU VALUES('인섭씨','한국어과','20','미정');
INSERT INTO STU VALUES('권재경','스포츠학과','20',NULL);

SELECT * FROM STU;

 

 

[테이블2] 학생들의 장학금 정보가 있는 테이블

CREATE TABLE STU_SH (
    "이름" VARCHAR(20)
   ,"장학금명" VARCHAR(20)
   ,"장학금액수" NUMBER(20)
);

INSERT INTO STU_SH VALUES('인섭씨','성적장학',9999999);
INSERT INTO STU_SH VALUES('권재경','미남장학',9999999);

SELECT * FROM STU_SH;

 

 

MERGE

MERGE 
  INTO STU S
     USING 
     (SELECT 이름,장학금명
        FROM STU_SH
      ) S2
      ON
      (S.이름 = S2.이름
      )
      WHEN MATCHED THEN 
      UPDATE 
      SET S.장학금명 = S2.장학금명; -- S의 장학금명에 S1의 장학금명으로 UPDATE
      
      
      SELECT * FROM STU;

MERGE 전 → 후 

 

 

 

 

 

참고자료 

https://p-ordinarydays.tistory.com/10

'데이터베이스' 카테고리의 다른 글

3. 오라클 - 레벨링(LEVEL)  (1) 2023.05.20
2. 오라클 - WITH구문(서브쿼리 정의)  (0) 2023.05.14
1. 오라클 - 테이블에 ROLE 부여  (0) 2023.05.14
0. 카테고리 소개  (0) 2023.05.14
Comments