-
SQL : INSERT+UPDATESTUDY/DB 2021. 4. 28. 16:15
보통 테이블에 값이 있으면 INSERT없으면 UPDATE를 할 때 쿼리를 세 번 실행한다.
- 값이 있는지 없는지 SELECT
- 값이 없으면 INSERT
- 값이 있으면 UPDATE
하지만 이걸 한 번에 해결해주는 쿼리문이 존재한다. 해당 쿼리문은 INSERT와 UPDATE를 같이 할 때 사용하는 것으로, 테이블에 값이 존재하지 않으면 INSERT하고, 존재하면 지정된 컬럼을 UPDATE한다.
- MySQL : ON DUPLICATE KEY UPDATE
INSERT INTO [TABLE] - UPDATE 또는 INSERT할 테이블 혹은 뷰
(
[COLUMN1]
, [COLUMN2]
, [COLUMN3]
)
VALUES (
[VALUE1]
, [VALUE2]
, [VALUE3]
)
ON DUPLICATE KEY UPDATE [COLUMN2] = [VALUE2], [COLUMN3] = [VALUE3]
- COLUMN1이 기본키라는 가정하에 기본키를 제외한 UPDATE할 컬럼들- ORACLE : MERGET INTO
MERGE INTO [TABLE / VIEW] - UPDATE또는 INSERT할 테이블 혹은 뷰
USING [TABLE / VIEW / DUAL] - 비교 대상 테이블 혹은 뷰(동일 테이블의 경우 DUAL을 사용)
ON [조건] - 조건문
WHEN MATCHED THEN - 조건이 일치하면 UPDATE
UPDATE SET
[COLUMN1] = [VALUE1],
[COLUMN2] = [VALUE2],
...
(DELETE [TABLE] WHERE [COLUMN 1] = [VALUE 1] AND ...) - DELETE 사용 가능
WHEN NOT MATCHED THEN - 조건이 일치하지 않으면 INSERT
INSERT (COLUMN1, COLUMN2, ...)
VALUES (VALUE1, VALUE2, ...)
'STUDY > DB' 카테고리의 다른 글
그림으로 공부하는 오라클 구조 : 오라클의 여러 프로세스 (0) 2022.04.25 그림으로 공부하는 오라클 구조 : I/O와 디스크의 관계 (0) 2022.04.24 프로젝트 성패를 결정짓는 데이터 모델링 이야기2 (0) 2021.07.08 JOIN (0) 2021.07.06 프로젝트 성패를 결정짓는 데이터 모델링 이야기1 (0) 2021.06.25