MySQL에서는 ON DUPLICATE KEY의 기능은
INSERT 시 Key 컬럼에 동일한 값이 존재하면
해당 Key에 해당하는 ROW에 INSERT가 아닌 UPDATE가 돌아가게 된다
오라클에서는 MERGE INTO라고 하면
어느정도 느낌이 올 것이다
오라클 MERGE INTO 사용법 & 예제
MERGE INTO는 하나의 테이블 혹은 두 테이블을 가지고 비교해본 뒤에 조건에 맞으면 UPDATE, DELETE를 수행하고 맞지 않으면 INSERT를 수행하게 된다 위 테이블을 사용한 예제를 보자면 아래와 같다 MERGE
wakestand.tistory.com
이걸 사용해주려면 먼저 테이블에
Key를 지정해준 뒤 쿼리문을 작성해주면 되는데
MySQL Key 지정방법은 아래를 참고하고
MySQL 테이블 제약조건 조회 추가 삭제 변경방법 정리
MySQL에서 제약조건은 DESC 스키마명.테이블명; 으로 조회가 가능한데 여기서 제약조건 추가 및 변경방법은 다음과 같다 -- PK ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY(NAME); -- FK ALTER..
wakestand.tistory.com
쿼리는 다음과 같이 작성한다
INSERT INTO TB1(컬럼명) values (값)
ON DUPLICATE KEY -- PK 컬럼명에 중복이 들어올 시
UPDATE 컬럼명 = 값; -- 중복 컬럼의 ROW를 UPDATE
쿼리를 두번 수행해본 뒤 결과를 보면
첫 INSERT 시에는 테이블에 아무 내용이 없어서
'철수', 20이 들어갔지만
두번째 INSERT 시에는 철수라는 Key가 이미 존재하기 때문에
NAME이 '철수'인 ROW의 NAME이 중복, AGE가 99로 변경된 것이 보인다
마지막으로 예제에 사용한 쿼리는 아래와 같다
INSERT INTO TB1(NAME, AGE) values ('철수', 20)
ON DUPLICATE KEY
UPDATE NAME = '중복', AGE = 99;
SELECT * FROM TB1; -- 조회용
'SQL > MySQL' 카테고리의 다른 글
MySQL INNER LEFT RIGHT CROSS JOIN 사용방법 및 예제 (0) | 2021.01.08 |
---|---|
MySQL WITH 절 사용법 및 예제(가상 테이블) (1) | 2021.01.08 |
MySQL 조회 삽입 변경 삭제방법 정리 (0) | 2021.01.07 |
MySQL 테이블 제약조건 조회 추가 삭제 변경방법 정리 (0) | 2021.01.07 |
MySQL 테이블 생성 및 제약조건 설정방법 정리 (0) | 2021.01.07 |
댓글