구문 |
기존 데이터가 없으면 |
기존 데이터가 있으면 |
INSERT IGNORE |
데이터 입력 row affected 1 |
무시 row affected 0 |
REPLACE INTO | 데이터 입력 row affected 1 | 기존 데이터 삭제 후 입력 AUTO_INCREMENT 필드가 있다면 값이 바뀝니다. |
ON DUPLICATE UPDATE | 데이터 입력 | 기존 데이터 수정 |
<Create Script>
1 2 3 4 5 6 | CREATE TABLE `CAR` ( `ID` INT NOT NULL AUTO_INCREMENT, `COLOR` VARCHAR(45) NOT NULL, `NUMBER` VARCHAR(45) NOT NULL, PRIMARY KEY (`ID`), UNIQUE INDEX `NUMBER_UNIQUE` (`NUMBER` ASC)); |
** 주의 사항 : Primary Key 혹은 Unique Index 필드를 기준으로 중복 체크를 하게 됩니다.
<Data Insert> - 최초 데이터 입력
1 2 | INSERT INTO CAR (COLOR, NUMBER) VALUES ('RED', '1234'); INSERT INTO CAR (COLOR, NUMBER) VALUES ('BLUE', '7777'); |
<Result>
ID | COLOR | NUMBER |
---|---|---|
1 | RED | 1234 |
2 | BLUE | 7777 |
* 각각 1 row affected
<Data Insert Ignore> - INSERT IGNORE 중복 입력
1 2 | INSERT IGNORE INTO CAR (COLOR, NUMBER) VALUES ('RED', '1234'); INSERT IGNORE INTO CAR (COLOR, NUMBER) VALUES ('BLUE', '7777'); |
<Result>
ID | COLOR | NUMBER |
---|---|---|
1 | RED | 1234 |
2 | BLUE | 7777 |
* 각각 0 row affected
* 데이터 변화 없음.
<Data Replace> - Replace 중복 입력
1 2 | REPLACE INTO CAR (COLOR, NUMBER) VALUES ('RED', '1234'); REPLACE INTO CAR (COLOR, NUMBER) VALUES ('BLUE', '7777'); |
<Result>
ID | COLOR | NUMBER |
---|---|---|
5 | RED | 1234 |
6 | BLUE | 7777 |
* 각각 2 row affected - 기존에 데이터가 없으면 1 있으면 2 row affected
* ID값이 mysql ver 5.1.73 에서는 3, 4, mysql ver 5.6 에서는 5, 6이 된다. INSERT IGNORE 에서 Auto Increment 되는지 여부가 달라지는 것 같다.
<Data Insert On Duplicate Key Update> - Insert On Duplicate Key Update 중복 입력
1 2 | INSERT INTO CAR (COLOR, NUMBER) VALUES ('RED', '1234') ON DUPLICATE KEY UPDATE COLOR='PINK'; INSERT INTO CAR (COLOR, NUMBER) VALUES ('BLUE', '7777') ON DUPLICATE KEY UPDATE COLOR='GREEN'; |
<Result>
ID | COLOR | NUMBER |
---|---|---|
5 | PINK | 1234 |
6 | GREEN | 7777 |
* 각각 2 row affected - 기존에 데이터가 없으면 1 있으면 2 row affected
* ID 값은 변화가 없고 COLOR만 UPDATE 되었다.
이곳에서 테스트 및 확인이 가능합니다.
'Database' 카테고리의 다른 글
CentOS6 MariaDB 설치 (0) | 2018.11.13 |
---|---|
oracle - replace xml invalid character 오라클 XML 사용제한 문자 치환 (0) | 2018.10.18 |
oracle Ampersand "&" insert (0) | 2018.10.15 |
mysql join update (2) | 2018.10.11 |
오라클 임시 테이블 (0) | 2018.07.17 |
오라클 전체 테이블의 데이터 건수 조회하는 쿼리 만들기. (0) | 2018.06.28 |
마리아 db 시작 (0) | 2018.03.12 |
db별 jdbc url 및 jdbc driverClass 정리 (0) | 2018.03.09 |