upsert문
업무 진행할때 특정 데이터를 insert하거나 update 하는 로직을 짜는 경우가 많다.
이때 테이블에 레코드가 존재하면 update문을, 존재하지 않으면 insert문을 수행하는 로직으로 진행하는데
이러면 코드가 길어지고, 쿼리를 2번 수행한다는 문제가 있다.
기존 방식
이런 문제를 해결할수 있는게 UPSERT 방식이다.
이름에서 유추할수 있듯 데이터가 있으면 Update문 , 없으면 Insert문을 수행하는 방식이다.
사용 방법
사용 방법은 insert문 뒤에 ON DUPLICATE KEY UPDATE를 붙이고 UPDATE문 SET절의 구문을 적어주면 된다.
INSERT INTO 테이블명 ( 컬럼명 , 컬럼명 , … )
VALUES ( 값 , 값 , … )
ON DUPLICATE KEY UPDATE
컬럼 = 값, 컬럼 = 값, …
예시
아래 테이블의 ID값이 1인 레코드의 info값을 info3으로 변경한다.
이렇게 upsert방식을 사용한다면 쿼리 한번에 update or insert 를 하도록 로직을 짤 수 있어서 매우 편리하다.
✅ 테스트 테이블
✅ UPSERT문 예시
✅ 수행 결과
'Study > Database' 카테고리의 다른 글
[Mysql] group by 그룹 내 특정 컬럼 값들을 한번에 조회하기 (group_concat) (0) | 2022.07.20 |
---|---|
[Mysql] 어제 날짜의 시작 일자(YYYY-MM-DD 00:00:00), 종료일자 (YYYY-MM-DD 23:59:59) 구하기 (0) | 2022.07.15 |
[MySql] 조회 결과 레코드 번호 매기기 (0) | 2022.07.15 |
[Oracle] 윈도우에 Oracle 11g 설치하기 (0) | 2022.07.15 |
[Oracle] 오라클 11g 계정 생성 및 권한 부여 방법 (0) | 2022.07.15 |