포스트

SQL 한번에 여러 데이터를 기입하며, 이미 존재하는 데이터일 때는 업데이트만 하는 문법

데이터베이스에 이미 입력된 데이터들에 대한 업데이트를 진행할 때 주로 사용하는 것은 UPDATE 문법이다.

그런데 UPDATE 문법은 한번에 하나의 데이터에 대해서만 가능하다. 다르게 말하면, 데이터의 양이 많을 때 데이터 업데이트는 엄청난 시간을 소모할 수 있다는 것이다.

  • 중요한 것은 한번의 쿼리로 모든 데이터를 업데이트 하는 것이다.

DUPLICATE KEY

INSERT 문법을 이용해서 해결할 수 있다. INSERT 문법이 데이터 업데이트에 무슨 상관이지? 할 수 있다. INSERT 문법과 ON DUPLICATE KEY UPDATE 를 함께 사용하면, 이미 존재하는 Primary Key가 존재할 때에는 해당 행을 업데이트 하고, 없는 데이터는 INSERT할 수 있는 문법이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
  INSERT INTO tableName (user_id, user_email)
  VALUES
    (123, "[email protected]"),
    (163, "[email protected]"),
    (204, "[email protected]"),
    (596, "[email protected]"),
    (573, "442@@example.com"),
    (311, "502@@example.com"),
    (850, "937@@example.com")
  ON DUPLICATE KEY UPDATE 
    user_id = VALUES(user_id),
    user_email = VALUES(user_email)
  ;

이렇게 할 경우 유저 ID와 Email을 Insert하며, 이미 존재하는 user_id이면 데이터를 update하는 것이다.

이렇게 하나의 쿼리를 통해 다량의 데이터를 INSERT 및 업데이트 할 수 있게 되는 것이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.