SQL/RDBMS

(MariaDB, MySQL)on duplicate key update(With bulk insert), insert ignore, replace into

dddzr 2022. 6. 11. 10:03

bulk insert는 아래에서 포스팅함

 

bulk insert

Bulk Insert는 쿼리 전후로 이루어지는 작업들을 줄여줘서 반복문으로 쿼리를 여러번 날리는 것보다 속도가 빠름. sql values에 값들을 배열로 넣어주기 INSERT INTO TABLENAME(COL1, COL2) VALUES (col11, col21)..

sumni.tistory.com

 

1. ON DUPLICATE KEY UPDATE

데이터 삽입 시, PRIMERY KEY나 UNIQUE KEY가 중복되었을 경우 UPDATE, 중복된 키가 없을 경우 INSERT

해당 key에 업데이트 할 값을 직접 입력, values에 넣은값과 다른 값 지정해도 됨.

INSERT INTO table(table.col1, table.col2, table.col3, table.col4)
VALUES ('key1','key2','valueA','valueB')
ON DUPLICATE KEY UPDATE
table.col3 = 'valueA',
table.col4 = 'valueB'

 

with bulk insert

데이터가 여러개라 value를 직접쓸 수 x, TABLE_NAME.COL_NAME으로 지정

INSERT INTO table(table.col1, table.col2, table.col3, table.col4)
VALUES ('key1','key2','valueA','valueB'), ('key1','key3','valueA2','valueB2')
ON DUPLICATE KEY UPDATE
table.col3 = VALUES(table.col3),
table.col4 = VALUES(table.col4)

 

2. INSERT IGNORE

KEY가 중복되었을 경우 INSERT 무시

INSERT IGNORE INTO table (col1, col2, col3) VALUES (val1, val2, val3);

3. REPLACE INTO

KEY가 중복되었을 경우 해당 레코드를 삭제하고 다시 삽입

REPLACE INTO table (col1, col2, col3) VALUES (val1, val2, val3);

*삭제후 새로 삽입이라 AUTO_INCREMENT로 ID(PK)값을 지정했을 경우 ID값이 변함