SQL[Mysql] - Upsert 쿼리

CODE0227·2025년 3월 10일

SQL

목록 보기
1/6

1️⃣ UPSERT 란?

UPSERT는 데이터베이스에서 Insert,Update의 줄임말로, 데이터를 삽입하려다가 중복 키가 존재하면 업데이트를 수행하는 작업을 의미한다.

2️⃣ 사용목적

새로운 데이터를 추가하거나, 기존 데이터를 갱신하는 단일 작업으로 효율성을 높일 수 있다.
중복 체크 후 데이터가 있으면 업데이트, 없으면 삽입 과정을 하나의 쿼리로 처리할 수 있는 쿼리이다.
테이블의 고유 키(PRIMARY KEY, UNIQUE KEY)를 기준으로 충돌 여부를 확인 후 고유 키 가 존재하면 Update를 해준다.

3️⃣장점

별도로 SELECT 후 INSERT/UPDATE를 나눌 필요 없음.
단일 쿼리로 처리해 트랜잭션 비용 감소.
데이터 정합성 보장.

4️⃣예시

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 처리를 한다.

5️⃣ 핵심

UPSERT는 중복 데이터 처리를 단순화하며, 데이터베이스 작업을 효율적으로 만들어주는 개념이다.

profile
CODE0227

0개의 댓글