>데이터 베이스 >MySQL 튜토리얼 >여러 행 삽입 및 업데이트를 위해 MySQL의 ON DUPLICATE KEY UPDATE를 어떻게 사용할 수 있습니까?

여러 행 삽입 및 업데이트를 위해 MySQL의 ON DUPLICATE KEY UPDATE를 어떻게 사용할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-11 07:06:45455검색

How Can I Use MySQL's ON DUPLICATE KEY UPDATE for Multiple Row Inserts and Updates?

ON DUPLICATE KEY UPDATE

을 사용하여 MySQL에서 여러 행을 효율적으로 삽입 및 업데이트

MySQL의 ON DUPLICATE KEY UPDATE 절은 단일 쿼리 내에서 여러 행에 대한 삽입 및 업데이트 작업을 모두 수행하기 위한 간소화된 방법을 제공합니다. 이는 고유 키를 처리하고 오류를 방지하며 데이터 일관성을 보장할 때 특히 유용합니다.

시나리오:

테이블에 여러 행을 삽입해야 하지만 중복된 고유 키 값으로 인해 일부 행이 이미 존재할 수 있는 시나리오를 생각해 보세요. 오류를 생성하는 대신 기존 행을 새 데이터로 업데이트하려고 합니다.

예:

beautiful이라는 테이블에 여러 행을 삽입하도록 설계된 다음 SQL 문이 있다고 가정해 보겠습니다.

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29);</code>

name이 고유 키이고 일부 이름이 이미 존재하는 경우 이 쿼리는 실패합니다. 이를 처리하기 위해 ON DUPLICATE KEY UPDATE.

를 활용합니다.

해결책:

ON DUPLICATE KEY UPDATE 문에 INSERT 절을 추가하세요.

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>

이 수정된 쿼리는 name이 고유한 새 행을 삽입합니다. 중복된 name이 발견되면 age 열만 VALUES 절에 제공된 값으로 업데이트됩니다.

최신 구문(MySQL 8.0.19 이상):

MySQL 8.0.19 이상 버전에서는 별칭을 사용하여 더 읽기 쉬운 접근 방식을 제공합니다.

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age;</code>

여기서 AS new는 새 행에 별칭을 할당하여 해당 필드(예: new.age)를 명확하게 참조할 수 있도록 합니다.

이전 구문(MySQL 8.0.19 이전 버전):

이전 MySQL 버전의 경우 VALUES 키워드는 삽입되는 값을 참조하는 데 사용됩니다.

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>

ON DUPLICATE KEY UPDATE을 사용하면 단일 SQL 문 내에서 삽입과 업데이트를 모두 효율적으로 관리하여 코드를 단순화하고 데이터베이스 성능을 향상시킬 수 있습니다.

위 내용은 여러 행 삽입 및 업데이트를 위해 MySQL의 ON DUPLICATE KEY UPDATE를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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