오라클 MERGE INTO (MariaDB ON DUPLICATE KEY)
- DB / Oracle
- 2018. 5. 27. 11:41
요즘 MariaDB 쿼리를 오라클 쿼리로 바꾸면서
배우는게 많은것 같다.
이번엔 MariaDB에서 ON DUPLICATE KEY 를 오라클에서
사용하기위해 바꿔 보겠다.
먼저 내가 바꾸려고 했던 MariaDB를 보자
대부분 ON DUPLICATE KEY 를 사용하기 위해선
아래와 구성이 비슷할 것이다.
ON DUPLICATE KEY 에 대한 구성과 기능을 알아보자.
INSERT INTO로 favorite 라는 테이블에
데이터를 삽입하려 한다.
hno, member_nm 이라는
컬럼에 VALUES로 파라미터값 #{hno}, #{memberNm}
의 값을 넣는다. 이때 hno와 member_nm에 이미 값이 들어있다면
ON DUPLICATE KEY 가 쓰이게 된다.
ON DUPLICATE KEY 를 사용하여 만약 INSERT하려는
테이블에 값들이 있으면 UPDATE 한다
hno의 값은 #{hno}
member_nm은 #{memberNm}
use_yn은 Y의 값으로 UPDATE한다.
이것이 위 쿼리문을 해석한 것이다.
ON DUPLICATE KEY 는 주로 INSERT INTO와 같이 쓰인다
데이터를 넣으려는데 이미 데이터가 있다면
ON DUPLICATE KEY 을 이용해 값을
INSERT 하지 않고 UPDATE 한다.
이제 위 쿼리문을 오라클로 바꿔보자
오라클에서도 ON DUPLICATE KEY 기능을 수행할수 있는
함수가 있다. 하지만 좀더 복잡하다.
그 함수는 MERGE INTO 라는 함수인데. 일단 내가 바꾼
쿼리문을 보자
MERGE INTO 로 favorite테이블에 접근한다.
USING 의 DUAL에서 USING은 사용하려는 테이블을 적어준다
DUAL은 사용할 테이블이 하나 라는 것이다.
즉 사용하려는 테이블이 하나이기 때문에 USING DUAL을 적어줬다.
ON 옆에는 비교 연산을 해야한다.
hno와 #{hno}가 같고 member_nm과 #{memberNm}을 비교하여
WHEN MATCHED THEN --> 두 비교 연산한 값이 같으면
UPDATE SET 해라, use_yn 을 Y값으로
WHEN NOT MATCHED THEN --> 비교 연산값이 다르면
INSERT 해라 hno 컬럼과 member_nm 컬럼에
#{hno}값과 #{memberNm}값을 INSERT.
이것이 위 쿼리를 해석한것이다.
나중에 테이블 2개를 사용한것도 한번 포스팅해봐야 겠다.
'DB > Oracle' 카테고리의 다른 글
오라클에서 계정 생성, 권한, 테이블 덤프하기. (0) | 2019.03.31 |
---|---|
keyProperty 사용하기(오라클, 마리아DB) (0) | 2018.06.11 |
오라클 외래키 설정(MariaDB 외래키 설정) (0) | 2018.05.27 |
오라클 시퀀스 생성하기 (MariaDB AUTO_INCREMENT) (0) | 2018.05.27 |
데이터베이스의 정의 와 특징 (0) | 2018.04.01 |