Merge SQL을 사용해보자.
형식 : 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으로 보너스 금액이 갱신 되었다.
쉽게 생각하자.
이것은 단순히 조회하였을때 , 값이 존재하면 수정을 하는 것이고, 없다면 삽입해주는 문장을 하나로 합친 것이다.