MERGE INTO 란?
: 특정 테이블이나 자기 자신을 비교하여 조건에 따라 update 혹인 insert를 할 수 있다.
예를 들어, 특정 조건의 데이터가 이미 테이블에 존재하면 update하고 없는 경우에는 insert 하는 것을코드를 사용하는 것이 아닌 쿼리 단에서 해결할 수 있습니다.
사용법
MERGE INTO table_name alias
USING (table /view / subquery) alias
ON (join condition)
WHEN MATCHED THEN -- 조건에 데이터가 존재할 경우
UPDATE SET col1 =val1
WHEN NOT MATCHED THEN -- 조건에 데이터가 존재하지 않을 경우
INSERT (column lists) VALUES (values);
예제
-> 성적 테이블에 학생 ID가 있으면 update, 없으면 insert
MERGE INTO score_table st
USING a_scoretable ast
ON st.student_id=ast.student_id
WHEN MATHCED THEN
UPDATE SET st.score=ast.score
WHEN NOT MATHCED THEN
INSERT (st.student_id, st.score_id) VALUES (ast.student_id, ast_score)
자기 자신과 비교하는 DUAL
1. 오라클 자체에서 제공되는 테이블
2. 내부에서 자기 자신의 테이블을 비교할 때 사용
3. 간단하게 함수를 이용해서 계산 결과값을 확인할 때 사용
MERGE INTO emp
USING DUAL
ON (employee_id = 200911)
WHEN MATCHED THEN
UPDATE SET
first_name = 'John',
last_name = 'Petrucci',
email = 'dream@johnpetrucci.com',
......
WHEN NOT MATCHED THEN
INSERT (first_name, last_name, email, ...... )
VALUES ('John', 'Petrucci', 'dream@johnpetrucci.com', ...... );
참고
http://jag212.github.io/databaseMerge/
'프로그래밍 > Database' 카테고리의 다른 글
[MariaDB] mariadb 접속 오류 및 대소문자 구분 (0) | 2020.04.17 |
---|---|
(데이터베이스) Delete, Drop, Truncate 데이터 삭제하기 (0) | 2019.01.19 |
(데이터베이스) 파티셔닝(Partitioning) 이란? (0) | 2019.01.13 |
(데이터베이스) 정규화란? (0) | 2018.12.10 |
(데이터베이스) 데이터 독립성과 구조 사상 (0) | 2018.12.02 |