형식 : MERGE 문
MERGE INTO [스키마.]테이블 명
USING (update나 insert 될 데이터원천)
ON (update될 조건)
WHEN MATCHED THEN
SET 컬럽1 = 값1, 컬럭2 = 값2 ...
WHERE update 조건
DELETE WHERE update_delete 조건
WHEN NOT MATCHED THEN
INSERT (컬럼1,컬럼2,....) VALUES (값1,값2...)
WHERE insert 조건;
일단 데이터는 중요하지 않다. 연습용 테이블이니...(사실 책 예제)
얼추10~12월의 데이터를 삽입한다.
위에서 ex3_3 테이블에 데이터를 삽입한 것과 비교하여, 존재하면 연봉에 0.01 해준다.
사실 여기는 책의 오타인것 같다.
0.01을 해주어야 하는데 0이 하나 더 들어간 것 같다.
문장은 매니저번호가 146인 사원의 연봉을 올려주기 위한 select 작업? 이랄까 ??
Merge문은 보면 복잡하지만 나눠서 생각하면 된다.
일단 나눠서 만약 이 테이블에 146번의 매니저를 가지는 사원이 있다면 = MATCHED
그 사람의 연봉을 인상해주고,
만약 존재하지 않다면 = NOT MATCHED
신규로 삽입을 하되 연봉은 0.1%로 삽입한다.
(서브 쿼리절에서 salary * 0.001 이 부분은 복붙의 결과일뿐 없어야 한다.)
결론적으로는 160번 사원은 7.5로 신규 입력 되었고, 161번의 사원은 70으로 보너스 금액이 갱신 되었다.
쉽게 생각하자.
이것은 단순히 조회하였을때 , 값이 존재하면 수정을 하는 것이고, 없다면 삽입해주는 문장을 하나로 합친 것이다.
'DB > Oracle' 카테고리의 다른 글
Oracle 공부 이야기 - 테이블 스페이스 생성 및 계정 생성 (0) | 2015.08.11 |
---|---|
Pseudo-Column이란? (0) | 2015.08.11 |
SQL 이야기 - 검색편 (0) | 2015.04.28 |
Oracle service on/off 방법 (0) | 2015.04.28 |
Oracle developer Error : ora-12505 (0) | 2015.04.28 |