본문 바로가기
프로그래밍/MySQL

[MySQL] 값이 없으면 INSERT 값이 있으면 UPDATE하기

by tempus 2021. 8. 6.
반응형

Intro

데이터베이스에서 대량의 데이터를 등록할 때 기존에 값이 이미 있는 경우 등록하려는 데이터에 Unique 키 값은 같은데 데이터가 다를 경우가 있습니다. 이 때 내가 원하는 건 없는 데이터는 INSERT하고 기존에 있는 데이터는 키 값을 비교하여 UPDATE 하고 싶습니다. 그 때 사용하는 쿼리가 INSERT INTO ON DUPLICATE KEY UPDATE 입니다.

INSERT INTO ON DUPLICATE KEY UPDATE 사용

KEY DATA1 DATA2 DATA3
VARCHAR INT INT INT

위와 같은 구조의 테이블이 있다고 하고 아래의 쿼리문을 실행시키면

INSERT INTO tb_code(CODE, DATA1, DATA2, DATA3) 
VALUES ('test_code2', 100, 100, 100) 
ON DUPLICATE KEY UPDATE DATA1=100, DATA2=120, DATA3=115;

 

insert_img

 

위와 같이 데이터가 생성되는 것을 알 수 있습니다. 그 이후 다시 한번 저 쿼리문을 실행시키면

 

update_img

 

위와 같이 해당 키의 값을 찾아서 UPDATE 하게 됩니다. 해당 쿼리문은 테이블에 데이터들이 이미 존재할 때 변경해야하는 데이터나 새로 삽입해야 하는 데이터들을 한 번에 UPDATE하고 싶을 때 유용하게 사용할 수 있습니다.

 

반응형

'프로그래밍 > MySQL' 카테고리의 다른 글

[MySQL] JOIN 이란? (INNER, OUTER, CROSS)  (0) 2021.08.09

댓글


loading