본문 바로가기
DBMS/MySQL

[MySQL] 마이에스큐엘_데이터 있으면 UPDATE 없으면 INSERT 처리 (feat. DUPLICATE ON KEY UPDATE)

by 썸머워즈 2020. 1. 15.
반응형


- DUPLICATE ON KEY UPDATE  -


데이터가 있으면 UPDATE 없으면 INSERT 처리


 제어할 수 있는 DUPLICATE ON KEY UPDATE 구문


어찌 보면 오라클의 MERGE INTO 구문과 비슷하다고 느껴진다.


해당 구문에 대해 알아보자


INSERT INTO [TABLE] (COLUMN1, COLUMN2, ...)

VALEUS (VALUE1, VALUE2, ...)

ON DUPLICATE KEY

UPDATE (COLUMN1 = VALUE1 , COLUMN2 = VALUE2, ...)


기존 INSERT INTO 구문에 뒷부분에 추가해서 써주기만하면 된다.


성능면에서도 괜찮은 구문이라는 말이 많다.


예)


CREATE TABLE MINE(

id VARCHAR(10) PRIMARY KEY,

name VARCHAR(10),

salary NUMBER

)


간단하게 테이블 하나를 만들어놓고 시작해보자


INSERT INTO MINE VALUES ("CD2", "HAN", 20000)

ON DUPLICATE KEY

UPDATE name = "KIM" , salary = 300000


위의 쿼리를 그대로 실행하면


id

name 

salary 

 CD2

HAN 

20000 


이러한 결과가 나오며


해당 쿼리를 다시한번 실행하게 되면


id

name 

salary 

 CD2

KIM

300000


이런식으로 값이 변한것을 확인이 가능하다.



추가적으로 실험은 해보지 않았지만


key 필드 값 역시 뒤에 UPDATE 구문에 써줄수 있다.


반응형


댓글

TOP