오라클 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) 
  |