UPSERT란?
데이터베이스에서 기존에 값이 저장(INSERT)되어있는경우 UNIQUE 키 값을 설정을 해 놓으면 새로운 값이면 INSERT, 이미 존재하는 경우에는 UPDATE를 실행해주는 용어로 UP(DATE)와 (IN)SERT를 합쳐UPSERT라고 많이 부릅니다.
UPSERT 사용 전 체크사항 - 유니크 키 값 설정
- 유니크 키 값을 설정해 놓는 이유는 유니크한 값을 이용하여 중복되는 행이 없게 설정을 하는것으로 유니크한 값이 존재하면 있는걸로 판단하고 UPDATE를 없으면 INSERT를 하기 위해서 꼭 필수로 설정을 해 놓아야 합니다.
- 하나로 유니크한 값을 설정할수 없는경우 두가지 컬럼으로 설정을 할수 있습니다.
UPSERT문 사용하기
INSERT INTO 테이블 (컬럼1, 컬럼2, 컬럼3) VALUES (값1, 값2, 값3)
ON DUPLICATE KEY UPDATE 변경컬럼1 = 변경값, 변경컬럼2 = 변경값
위 방식은 MySQL에서 사용되는 방식으로 Oracle과 MSSQL 방식은 조금 다릅니다.
MySQL에서 UPSERT를 사용할때는 ON DUPLICATE KEY UPDATE를 INSERT 뒤에 작성하여 변경을 원하는 컬럼과 컬럼값을 입력해주면 됩니다.
위 이미지를 예를 들어서 order_id와 book_id가 동일한 키 값이 들어오면 이미 데이터가 존재하는걸로 인식하여 count(갯수)를 UPDATE 하고 없으면 데이터가 없는걸로 인식되어 INSERT 처리가 됩니다.
'데이터베이스' 카테고리의 다른 글
MySQL 데이터 삭제 (0) | 2024.01.13 |
---|---|
스칼라 서브쿼리 (0) | 2024.01.07 |
[SQL] timezone 수정하기 (0) | 2023.12.20 |
DATABASE의 제약조건 (NOT NULL과 DEFAULT) (0) | 2023.12.19 |
[SQL] 날짜/시간 타입 (0) | 2023.12.19 |