UPSERT는 데이터베이스에서 Insert,Update의 줄임말로, 데이터를 삽입하려다가 중복 키가 존재하면 업데이트를 수행하는 작업을 의미한다.
새로운 데이터를 추가하거나, 기존 데이터를 갱신하는 단일 작업으로 효율성을 높일 수 있다.
중복 체크 후 데이터가 있으면 업데이트, 없으면 삽입 과정을 하나의 쿼리로 처리할 수 있는 쿼리이다.
테이블의 고유 키(PRIMARY KEY, UNIQUE KEY)를 기준으로 충돌 여부를 확인 후 고유 키 가 존재하면 Update를 해준다.
별도로 SELECT 후 INSERT/UPDATE를 나눌 필요 없음.
단일 쿼리로 처리해 트랜잭션 비용 감소.
데이터 정합성 보장.
INSERT INTO users (id, name, score)
VALUES (1, 'Alice', 100)
ON DUPLICATE KEY UPDATE
score = VALUES(score);
id 가 pk일 경우 1이라는 데이터가 존재하면 score의 값만 변경한다.
INSERT INTO users (name, phone ,score)
VALUES ('Alice','010-000-000',100)
ON DUPLICATE KEY UPDATE
score = VALUES(score);
name,phone unique형식의 복합키 생성을 하면 name과 phone이 존재하면 update, 존재하지 않으면 insert 처리를 한다.
UPSERT는 중복 데이터 처리를 단순화하며, 데이터베이스 작업을 효율적으로 만들어주는 개념이다.