집 >데이터 베이스 >MySQL 튜토리얼 >여러 행 삽입 및 업데이트를 위해 MySQL의 ON DUPLICATE KEY UPDATE를 어떻게 사용할 수 있습니까?
ON DUPLICATE KEY UPDATE
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!