강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

merge(MySQL의 replace 기능와 동일)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

merge(MySQL의 replace 기능와 동일)

 

t.gif
t.gif
오라클 9i부터 merge명령어가 제공된다.
이것은 MySQL에서 사용하던 replace와 동일한 기능을 제공한다.
즉, 어떤 레코드를 테이블에 insert할때 이미 레코드가 존재한다면 update를 하고,
존재하지 않는다면 insert를 수행하게 된다.

기존 select후 레코드존재 여부파악 -> 있음 -> update
                                  -> 없음 -> insert

위와 같이 여러번의 SQL문을 수행해야 하는 횟수를 줄여준다.
여기서는 간단한 사용법만을 이야기 하겠다.


test라는 테이블에 다음과 같은 데이터가 존재한다.
SQL> select * from test;

        ID NAME
---------- ----------
         1 22
         2 33
         3 3
         4 4

id = 5 레코드는 존재하지 않으므로 insert되게 된다.
SQL> merge into test D
  2  using (select 5 id, 'maddog' name from dual) S
  3  on (D.id = S.id)
  4  when matched then update set D.name=S.name
  5  when not matched then insert (D.id, D.name) values (S.id, S.name);

1 row merged.

SQL> select * from test;

        ID NAME
---------- ----------
         1 22
         2 33
         3 3
         4 4
         5 maddog


id = 5 레코드는 이미 insert되어 있으므로 update되게 된다.
SQL> merge into test D
  2  using (select 5 id, 'myunggyu' name from dual) S
  3  on (D.id = S.id)
  4  when matched then update set D.name=S.name
  5  when not matched then insert (D.id, D.name) values (S.id, S.name);

1 row merged.

결과화면이다.
SQL> select * from test;

        ID NAME
---------- ----------
         1 22
         2 33
         3 3
         4 4
         5 myunggyu

SQL>

This article comes from dbakorea.pe.kr (Leave this line as is)

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,150 명
  • 현재 강좌수 :  36,432 개
  • 현재 접속자 :  263 명