안녕하세요, 오늘은 MySQL의 특별한 INSERT 문인 "INSERT ... ON DUPLICATE KEY UPDATE"에 대해 알아보겠습니다. 이 문은 새로운 레코드를 추가하는 동시에 기존 레코드를 업데이트할 수 있는 매우 유용한 기능입니다.
"INSERT ... ON DUPLICATE KEY UPDATE" 구문의 기본 형태는 다음과 같습니다:
INSERT INTO 테이블명 (열1, 열2, ...)
VALUES (값1, 값2, ...)
ON DUPLICATE KEY UPDATE 열1 = 값1, 열2 = 값2, ...;
이 구문은 다음과 같은 방식으로 동작합니다:
1. 먼저 새로운 레코드를 삽입하려고 시도합니다.
2. 만약 기존 레코드와 중복되는 고유 키 값(primary key 또는 unique key)이 있다면, 해당 레코드를 업데이트합니다.
3. 중복되는 키 값이 없다면 새로운 레코드를 삽입합니다.
예를 들어, 사용자 정보를 저장하는 "users" 테이블이 있다고 가정해 보겠습니다. 이 테이블에는 사용자의 이메일 주소가 고유 키로 설정되어 있습니다. 새로운 사용자를 추가하거나 기존 사용자의 정보를 업데이트하는 경우 다음과 같이 쿼리를 작성할 수 있습니다:
INSERT INTO users (name, email, age)
VALUES ('John Doe', 'john@example.com', 30)
ON DUPLICATE KEY UPDATE name = 'John Doe', age = 30;
이 쿼리는 다음과 같이 동작합니다:
1. "users" 테이블에 새로운 레코드를 추가하려고 시도합니다.
2. 만약 "email" 열의 값인 'john@example.com'이 이미 존재한다면(고유 키 중복), 해당 레코드의 "name" 열을 'John Doe'로, "age" 열을 30으로 업데이트합니다.
3. 중복되는 키 값이 없다면 새로운 레코드를 삽입합니다.
이처럼 "INSERT ... ON DUPLICATE KEY UPDATE" 구문은 새로운 레코드 삽입과 기존 레코드 업데이트를 한 번에 처리할 수 있어 매우 편리합니다. 특히 사용자 정보, 제품 정보, 주문 내역 등의 데이터를 관리할 때 유용하게 사용할 수 있습니다.
이 구문을 사용하면 별도의 UPDATE 쿼리를 작성할 필요가 없어 코드의 중복을 줄일 수 있고, 데이터 처리 속도도 향상될 수 있습니다. 또한 트랜잭션 처리 측면에서도 장점이 있죠.
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] LOAD DATA 사용 방법 및 예시 (0) | 2024.07.28 |
---|---|
[MySQL] INTERSECT 사용 방법 및 예시 (0) | 2024.07.27 |
[MySQL] LOAD XML 사용 방법 및 예시 (0) | 2024.07.26 |
[MySQL] INSERT DELAYED 사용 방법 및 예시 (0) | 2024.07.26 |
[MySQL] Insert 사용 방법 및 예시 (0) | 2024.07.15 |
[MySQL] IMPORT TABLE 사용 방법 및 예시 (0) | 2024.05.03 |
[MySQL] HANDLER 사용 방법 및 예시 (0) | 2024.05.03 |
[MySQL] DO 사용 방법 및 예시 (0) | 2024.04.25 |