새소식

반응형
DB

[MySQL] 중복 데이터 관리(on duplicate key update..)

  • -
반응형

mysql에서는 다양한 방법의 중복 데이터 관리 방식이 있다

각각의 방식들을 한번 알아보도록 하자 

  • insert ignore
  • replace
  • on dupicate key update

중복으로 인지하는 경우는 아래와 같다

데이터 삽입 , PRIMERY KEY UNIQUE KEY 중복되었을 경우

 

insert ignore

새로 추가로 insert 무시 

INSERT IGNORE INTO TABLE_NAME (column1, column2, column3) VALUES ('kim', 1000, 0);

 

replace

 

기존의 레코드를 삭제하고 다시 데이터 삽입

레코드가 삭제되고 다시 삽입되기 때문에 AUTO_INCREMENT ID값을 지정했을 경우 ID값이 변한다

REPLACE INTO TABLE_NAME (column1, column2, column3) VALUES ('kim', 1000, 0);

 

on duplicate key update 

지정한 데이터만 UPDATE

INSERT INTO TABLE_NAME (column1, column2, column3) VALUES ('kim', 1000, 0) 
ON DUPLICATE KEY UPDATE 
  column2 = column2 * 2, 
  column3 = column3 + 100;

 

위에 예시에서는 기존에 값에 특정한 작업을 해서 새로운 값을 넣는 경우지만

insert into... values(...)에 입력한 값을 update 조건에 추가하고 싶은 경우는 아래와 같이 사용하면 된다

INSERT INTO TABLE_NAME (column1, column2, column3) VALUES ('kim', 1000, 0) 
ON DUPLICATE KEY UPDATE 
  column1 = VALUES(column1);

 

VALUES() 블럭 없이 칼럼명만 입력하게 되면 이전에 존재하던 값이 들어가게 된다

INSERT INTO TABLE_NAME (column1, column2, column3) VALUES ('kim', 1000, 0) 
ON DUPLICATE KEY UPDATE 
  column1 = column1;
반응형

'DB' 카테고리의 다른 글

CAP 정리(브루어의 정리)  (0) 2024.06.29
[MySQL] Partition 파티션 이란  (0) 2022.08.11
[DB] 파티셔닝 샤딩 비교 ( Partitioning, Sharding )  (0) 2022.08.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.