[오라클 SQL] MERGE INTO 구문 사용 방법 및 예제
- Database(데이터베이스)/Oracle
- 2019. 5. 21. 15:26
안녕하세요~
이번 포스팅에서는 오라클에서만 제공하는 문법인 MERGE INTO 구문 사용 방법에 대해서 알아보도록 하겠습니다.
MERGE 문이란?
- MERGE문은 조건에 따라서 데이터의 삽입, 갱신, 삭제 작업을 한번에 할 수 있게 해주는 문 입니다.
- 해당 행이 존재하는 경우 UPDATE or DELETE 문을 수행하고, 새로운 행인 경우 INSERT 문을 수행합니다.
- 대상 테이블에 대한 UPDATE/INSERT 조건은 ON 절에 결정 됩니다.
MERGE Syntax
1 2 3 4 5 6 7 8 9 10 11 12 13 |
MERGE [ hint ] INTO [ schema. ] { table | view } [ t_alias ] USING { [ schema. ] { table | view } | subquery } [ t_alias ] ON ( condition ) WHEN MATCHED THEN UPDATE SET column = { expr | DEFAULT } [, column = { expr | DEFAULT } ]... [ DELETE where_clause ] WHEN NOT MATCHED THEN INSERT [ (column [, column ]...) ] VALUES ({ expr [, expr ]... | DEFAULT }) |
- - INTO : DATA가 UPDATE되거나 INSERT 될 테이블 또는 뷰를 지정.
- - USING : 비교할 SOURCE 테이블 또는 뷰나 서브쿼리를 지정, INTO절의 테이블과 동일하거나 다를 수 있다.
- - ON : UPDATE나 INSERT를 하게 될 조건으로, 해당 조건을 만족하는 DATA가 있으면 WHEN MATCHED 절을 실행하게 되고, 없으면 WHEN NOT MATCHED 이하를 실행하게 된다.
- - WHEN MATCHED : ON 조건절이 TRUE인 ROW에 수행 할 내용 (UPDATE, DELETE포함 될 수 있음)
- - WHEN NOT MATCHED : ON 조건절에 맞는 ROW가 없을 때 수행할 내용 (INSERT)
※참고 사이트 - http://www.gurubee.net/lecture/2225
그럼 위와 같은 내용을 가지고서 실제 MERGE 문 사용을 해보도록 하겠습니다.
아래와 같이 STUDENT 테이블이 있습니다.
위 테이블에서, SCORE가 A인 학생을 찾아서 해당 학생이 존재하면 GRADE(학년)을 2학년으로 수정하고,
만약 존재하지 않는다면 이름은 장영실이면서 나이는 31살, 학년은 4학년, 성적은 A+인 학생을 추가하는 MEGRE 구문을 작성해 보도록 하겠습니다.
SQL 구문
1 2 3 4 5 6 7 8 9 |
MERGE INTO WIN.STUDENT stu USING DUAL ON(stu.SCORE = 'A') WHEN MATCHED THEN UPDATE SET stu.GRADE = '2' WHEN NOT MATCHED THEN INSERT (stu.NAME, stu.AGE, stu.GRADE, stu.SCORE) VALUES ('장영실', 31, 4, 'A+') |
실행 결과
위와 같이, 성적이 A학점인 홍길동 학생이 존재 하므로 1학년에서 2학년으로 정보가 UPDATE 된 것을 볼 수 있습니다.
만약 위 조건에서 점수가 A학생이 없었다면, 장영실 이라는 학생이 STUDENT 테이블에 새롭게 추가가 되었을 것 입니다!
이로써, 간단히 MERGE 문 사용 방법에 대해 알아보았습니다!
읽어 주셔서 감사합니다~~
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 SQL] COUNT, SUM 함수 사용 방법 및 예제 (0) | 2019.06.10 |
---|---|
[오라클 SQL] NVL, NVL2 함수 사용 방법 및 예제 (0) | 2019.05.22 |
[오라클 SQL] DECODE 함수 사용 방법 및 예제 (0) | 2019.05.21 |
[오라클 SQL] CASE 함수 CASE ~ WHEN~ THEN 사용 방법 및 예시 (0) | 2019.05.21 |
[오라클 SQL] 오라클 Toad 환경에서 .mdb파일 Import 하는 방법 (0) | 2019.05.20 |
이 글을 공유하기