일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Notepad++ 줄바꿈
- 원씽 책
- async false
- ajax 동기식
- Notepad 줄바꿈
- 원씽 내용
- xml 파싱 방법
- ajax 비동기식
- 간단한 채팅 프로그램
- 빅데이터분석기사 필기
- 원씽 독후감
- 빅데이터분석기사
- 자바스크립트 undefined
- dom sax 차이점
- 빅데이터분석기사 독학
- TCP 채팅
- 원씽 후기
- 자바 채팅
- 동기식 비동기식
- 노트패드++ 줄바꿈
- 자바 채팅 프로그램
- TCP Socket
- 빅분기 독학
- 책 원씽
- 빅분기
- async
- The OneThing
- 노트패드 줄바꿈
- 빅분기 필기
- dom sax 장단점
- Today
- Total
SooBlending
[Oracle] Merge 테이블 합치기 본문
<MERGE>
합병(병합): 구조가 같은 두 개의 테이블을 하나의 테이블로 합치는 기능.
- 기존에 존재하는 행이 있다면 새로운 값으로 갱신(update)되고
존재하지 않는 행이 있다면 새로운 행으로 추가(insert)해라!!
형식)
MERGE INTO 기준테이블명 별명
USING 참조테이블명 별명
ON (매칭 조건식)
WHEN MATCHED -- 매칭되는 행이 있다면
THEN 업데이트 문
WHEN NOT MATCHED -- 매칭되는 행이 아니라면
THEN 추가문;
create table emp11 -- 기준 테이블 (병합된 결과를 반영)
as select * from emp;
create table emp12 -- 참조 테이블
as select * from emp
where job='MANAGER';
update emp12 set job='사원';
insert into emp12 (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (8000,'나길동','사원',7788, sysdate, 2000, null, 30);
SQL> select empno, ename, job, deptno from emp12;
EMPNO ENAME JOB DEPTNO
---------- -------------------- ------------------ ----------
7566 JONES 사원 20
7698 BLAKE 사원 30
7782 CLARK 사원 10
8000 나길동 사원 30
=============================================================
MERGE INTO emp11 e1 -- 기준테이블(병합결과 반영)
USING emp12 e2 -- 참조테이블
ON (e1.empno = e2.empno)
WHEN MATCHED -- 매칭되는 행이 있다면
THEN -- 변경문
update set --이미 e1 기준테이블이 정의 되어있으므로 테이블명을 생략
e1.ename=e2.ename,
e1.job=e2.job,
e1.mgr=e2.mgr,
e1.sal=e2.sal,
e1.comm=e2.comm,
e1.deptno=e2.deptno
WHEN NOT MATCHED -- 매칭되는 행이 아니라면
THEN --추가문
insert values (e2.empno, e2.ename, e2.job, e2.mgr,
e2.hiredate, e2.sal, e2.comm, e2.deptno);
===> 4 rows merged.(4행 병합되었습니다!!)
select empno, ename, job, deptno from emp11;
EMPNO ENAME JOB DEPTNO
---------- -------------------- ------------------ ----------
7369 SMITH CLERK 20
7499 ALLEN SALESMAN 30
7521 WARD SALESMAN 30
7566 JONES 사원 20
7654 MARTIN SALESMAN 30
7698 BLAKE 사원 30
7782 CLARK 사원 10
7788 SCOTT ANALYST 20
7839 KING PRESIDENT 10
7844 TURNER SALESMAN 30
7876 ADAMS CLERK 20
7900 JAMES CLERK 30
7902 FORD ANALYST 20
7934 MILLER CLERK 10
8000 나길동 사원 30
=================================================================
'Programming > DataBase' 카테고리의 다른 글
[Oracle] PL/SQL (0) | 2017.11.09 |
---|---|
[Oracle] 시퀀스(Sequence) (0) | 2017.11.09 |
[Oracle] 뷰 (View) 단일뷰/복합뷰 (0) | 2017.11.08 |
[Oracle] 제약조건 (Constraint) (2) | 2017.11.07 |
[Oracle] 트랜잭션(Transaction) COMMIT/ROLLBACK (2) | 2017.11.07 |