본문 바로가기

DataBase

DB - INSERT INTO VS REPLACE INTO

REPLACE INTO란?

MySQL과 MariaDB에서는 REPLACE INTO를 사용할 수 있다. (Oracle에서는 MERGE INTO)

 

REPLACE INTO는 기본적으로 INSERT INTO와 마찬가지로 데이터를 테이블에 넣는점에서 동일하다.

차이점은 INSERT INTO는 신규로 데이터를 입력하는데, REPLACE INTO는 PK를 기준으로 데이터가 존재한다면, 기존 데이터를 지우고 기준키로 데이터를 다시 쓰는 것이다.

REPLACE INTO 예제코드

-- 테이블 생성
CREATE TABLE test
(
    id   INT PRIMARY KEY AUTO_INCREMENT COMMENT 'PK',
    name VARCHAR(50) NULL COMMENT '이름',
    age  TINYINT(3) DEFAULT 0 NOT NULL COMMENT '나이'
);

-- 테스트 데이터 INSERT
INSERT INTO test
    (name, age)
VALUES
    ('테스트1', 10),
    ('테스트2', 20),
    ('테스트3', 30),
    ('테스트4', 40),
    ('테스트5', 50),
    ('테스트6', 60);

INSERT INTO~

 

이제 REPLACE INTO를 사용해보자.

REPLACE INTO test
    (id, name, age)
VALUES
    (1, '테스트999', 1),
    (2, '테스트888', 2),
    (3, '테스트777', 3),
    (4, '테스트666', 4),
    (5, '테스트555', 5),
    (6, '테스트444', 6);

REPLACE INTO~

PK기준으로 위의 쿼리를 통해 변경된 데이터 모습을 확인할 수 있다!

-- PK가 없이 REPLACE INTO를 사용한다면? (id는 Auto Increment)
REPLACE INTO test
    (name, age)
VALUES
    ('테스트999', 1),
    ('테스트888', 2),
    ('테스트777', 3),
    ('테스트666', 4),
    ('테스트555', 5),
    ('테스트444', 6);

-> 데이터가 새로 INSERT가 되는 결과가 나온다.

 

결론: REPLACE INTO는 키 기준으로 해당 데이터가 없다면 INSERT, 있다면 UPDATE를 수행한다

'DataBase' 카테고리의 다른 글

DB - 복합키 순서  (0) 2022.04.05
DB - Replication  (0) 2022.03.22
DB - 정규화(Normalization)  (0) 2022.03.17
DB - 실행계획(explain) 보는방법  (0) 2022.03.13
DB - Bulk Insert  (0) 2022.03.13