>데이터 베이스 >MySQL 튜토리얼 >MySQL의 INSERT ... ON DUPLICATE KEY UPDATE는 Upsert 작업을 어떻게 처리합니까?

MySQL의 INSERT ... ON DUPLICATE KEY UPDATE는 Upsert 작업을 어떻게 처리합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-21 11:41:10796검색

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

MySQL의 효율적인 Upsert 작업: INSERT ... ON DUPLICATE KEY UPDATE 사용

MySQL 데이터베이스 관리에서는 데이터 존재 여부에 따라 새 행을 삽입하거나 기존 행을 업데이트해야 하는 경우가 많습니다. 이를 "Upsert" 작업(삽입 또는 업데이트)이라고 합니다.

MySQL은 Upsert 기능을 효율적으로 구현하기 위해 INSERT ... ON DUPLICATE KEY UPDATE 구문을 제공합니다. 작동 방식은 다음과 같습니다.

<code class="language-sql">INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...</code>

INSERT 절은 테이블에 삽입할 값을 지정합니다. ON DUPLICATE KEY UPDATE 절은 동일한 기본 키(또는 고유 인덱스)를 가진 행이 테이블에 이미 존재할 때 수행할 작업을 정의합니다.

예를 들어 다음 표를 살펴보세요.

<code class="language-sql">CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);</code>

4815162342의 thing_id 행에 새 데이터를 삽입하려면 times_used 열을 1씩 늘리고 first_time_used을 현재 타임스탬프로 설정하려면 다음 Upsert 쿼리를 사용할 수 있습니다.

<code class="language-sql">INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1</code>

4815162342에 대한 thing_id 행이 이미 존재하는 경우 쿼리는 times_used 열을 업데이트하고 first_time_used은 변경되지 않은 상태로 유지합니다. 그렇지 않으면 새 행이 삽입됩니다.

INSERT ... ON DUPLICATE KEY UPDATE은 MySQL에서 Upsert 작업을 수행하기 위한 유연하고 효율적인 기술입니다. 단일 쿼리를 사용하여 삽입 및 업데이트 작업을 수행할 수 있으므로 코드가 단순화되고 성능이 향상됩니다.

위 내용은 MySQL의 INSERT ... ON DUPLICATE KEY UPDATE는 Upsert 작업을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.