>데이터 베이스 >MySQL 튜토리얼 >MySQL INSERT 문에서 WHERE 절이 유효하지 않은 이유는 무엇이며 대안은 무엇입니까?

MySQL INSERT 문에서 WHERE 절이 유효하지 않은 이유는 무엇이며 대안은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-19 06:53:08690검색

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the alternatives?

MySQL INSERT 문: WHERE 절이 유효하지 않은 이유와 적합한 대안

소개:

MySQL의 INSERT 문은 테이블에 새 행을 추가합니다. 일반적인 오류는 WHERE 문 내에서 INSERT 절을 사용하는 것인데, 이는 구문상 올바르지 않습니다. 이 글에서는 오류에 대해 설명하고 효과적인 대안을 제시합니다.

잘못된 쿼리 및 설명:

다음 쿼리가 잘못되었습니다.

<code class="language-sql">INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;</code>

Users이 있는 행이 있는 경우에만 id = 1에 값을 삽입하려고 시도합니다. MySQL의 INSERT 문은 WHERE 절을 지원하지 않습니다. 무조건 삽입되도록 설계되었습니다.

올바른 MySQL INSERT 구문:

표준 INSERT 구문은 다음과 같습니다.

<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>

WHERE 절은 SELECT, UPDATE, DELETE 문에서만 사용됩니다.

대체 접근 방식:

조건부 삽입 또는 업데이트를 수행하려면 다음 옵션을 고려하세요.

  • 고유 ID가 있는 새 행 삽입: id이 기본 키 또는 고유 제약 조건인 경우 새 행을 삽입하면 됩니다.
<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
  • 기존 행 업데이트: UPDATE를 사용하여 기존 레코드 수정:
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
  • INSERT ... ON DUPLICATE KEY UPDATE: 이는 삽입과 업데이트를 결합합니다. 중복 키가 발견되면(예: 기존 id) 행이 업데이트됩니다. 그렇지 않으면 새 행이 삽입됩니다.
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>

중요 고려 사항:

  • 자동 증가 id 열: id이 자동 증가하는 경우 INSERT 문에서 이를 생략할 수 있습니다. MySQL은 자동으로 값을 할당합니다.
  • 대체 INSERT ... ON DUPLICATE KEY UPDATE 구문: 위의 내용은 다음과 같이 작성할 수도 있습니다.
<code class="language-sql">
INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;
```  This form is useful when updating only some columns.</code>

위 내용은 MySQL INSERT 문에서 WHERE 절이 유효하지 않은 이유는 무엇이며 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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