MySQL 삽입 중복 키 무시

Mysql Insert Ignore Duplicate Key



종종 테이블이나 결과 집합에 충돌하는 데이터가 있습니다. 또한 수정하는 데 시간이 많이 걸리고 종종 반복되는 기록을 피해야 합니다. 중복 레코드를 식별하고 어느 테이블에서든 삭제해야 합니다. 이 섹션에서는 중복 데이터가 테이블 내부에 나타나지 않도록 하는 방법과 현재 중복 레코드를 제거하는 방법에 대해 자세히 설명합니다. 이 가이드에서는 INSERT IGNORE 절을 사용하여 오류를 방지하는 방법을 배웁니다.

통사론:

다음은 INSERT IGNORE 쿼리의 구문입니다.







>>INSERT IGNORE INTO table_name(col1, col2, col3)가치(값_목록),(값_목록),(값_목록);

Workbench를 통해 IGNORE 삽입:

시스템에서 MySQL Workbench 8.0을 열고 데이터베이스 인스턴스에 연결합니다.





명령 영역에서 4개의 열이 있는 Employee 테이블을 만들어야 하며 그 중 하나는 UNIQUE로 지정해야 합니다. 내비게이터 쿼리 영역에서 아래 쿼리를 시도하여 이 테이블을 생성합니다. 전체 쿼리를 선택하고 플래시 기호를 클릭하여 실행합니다.





>>CREATE TABLE 직원(ID int PRIMARY KEY NOT NULL, 이름 varchar(오십)NOT NULL, 연령 Varchar(오십), 급여 변수(오십), 고유 한(ID));

생성 시 데이터베이스 데이터 아래의 테이블 옵션 아래 목록에서 테이블 직원을 찾을 수 있습니다.



그리드 보기에서는 쿼리를 입력하지 않고 레코드를 입력할 수 있습니다. 따라서 테이블 직원의 그리드 보기를 열고 아래와 같이 레코드를 추가합니다. 중복 없이 모든 고유 레코드를 입력했습니다. 변경 사항을 적용하려면 '적용' 버튼을 누르십시오.

위에 입력한 기록과 관련된 관련 쿼리가 있는 새 창이 열립니다. 이 화면을 리뷰 화면이라고 할 수 있습니다. 무언가를 변경하고 싶다면 여기에서 할 수 있습니다. 그렇지 않으면 적용 버튼을 눌러 쿼리를 실행하십시오.

보시다시피 쿼리가 성공적으로 실행되었으며 레코드가 데이터베이스와 해당 테이블 Employee에 저장되었습니다. 열 ID에 중복 값을 추가했다면 오류가 발생했을 것입니다. 마침 버튼을 누릅니다.

이것은 모두 그리드 보기에 관한 것이었습니다. 이제 쿼리 영역을 통해 레코드를 삽입합니다. 한편 이번에는 출력을 확인하기 위해 중복 레코드를 삽입했습니다. 따라서 두 개의 값 목록이 있는 아래 INSERT 쿼리를 시도했습니다. 두 값 목록 모두 'ID' 열에서 동일한 값을 갖습니다. 쿼리를 선택하고 플래시 기호를 눌러 쿼리를 실행합니다.

쿼리가 제대로 작동하지 않으며 이미지에 표시된 대로 INSERT 명령의 중복된 값으로 인해 오류가 생성됩니다.

이제 INSERT IGNORE 절을 사용하여 위의 동일한 쿼리를 시도하고 제시된 대로 실행합니다.

출력 영역에 오류가 발생하지 않는 것을 알 수 있지만 명령에 중복 값이 ​​포함되어 있다는 경고가 표시됩니다.

Employee 테이블의 그리드 보기를 새로 고칩니다. INSERT IGNORE 쿼리가 절반만 작동했습니다. 첫 번째 값 목록을 테이블에 삽입했지만 두 번째 값 목록은 반복되는 값 13으로 인해 무시되었습니다.

명령줄 셸을 통해 IGNORE 삽입:

이 개념을 이해하기 위해 시스템에서 MySQL 명령줄 클라이언트 셸을 열어 보겠습니다. 요청 시 MySQL 비밀번호를 입력하여 작업을 시작하십시오.

이제 테이블을 만들 차례입니다. 그렇게 하려면 아래 명령을 시도하십시오. 열 중 하나에 UNIQUE 제약 조건이 있는 동안 'minister'라는 테이블을 만들었습니다. 열 ID는 고유한 값만 허용하고 중복 값은 허용하지 않습니다.

>>CREATE TABLE data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, 이름 VARCHAR(오분의 사), 도시 VARCHAR(오분의 사));

쿼리가 적절하게 작동하고 테이블이 생성되었습니다. INSERT IGNORE 절을 이해하려면 먼저 간단한 INSERT 명령이 작동하는지 확인해야 합니다. 여러 정보 데이터를 테이블에 삽입하기 위해 INSERT 명령을 사용하는 경우 MySQL은 트랜잭션을 일시 중단하고 처리 전반에 걸쳐 오류가 발생하면 예외를 생성합니다. 결과적으로 테이블에 추가된 행이 없습니다. 아래의 쿼리를 사용하여 목회자 테이블에 첫 번째 레코드를 삽입해 보겠습니다. 테이블이 현재 비어 있고 상대할 레코드가 없기 때문에 쿼리가 성공적으로 작동합니다.

열 ID가 UNIQUE이므로 명령줄 셸에서 아래 명령을 시도하면 오류가 발생합니다. 이는 이전 쿼리에서 값 11을 추가했고 UNIQUE 키 때문에 반복되는 값을 다시 추가할 수 없기 때문입니다.

따라서 테이블을 확인하면 첫 번째 INSERT 쿼리에 의해 추가된 레코드가 1개뿐임을 알 수 있습니다.

>>선택하다*FROM data.minister;

반대로 INSERT IGNORE 절을 사용하는 경우 오류를 유발하는 잘못된 데이터 행은 무시되고 정확한 데이터 행만 입력됩니다. 아래 명령에서 INSERT IGNORE 명령을 사용하여 반복되는 값을 테이블에 추가하지 않고 오류를 간과했습니다. 보시다시피 첫 번째 값 목록에는 이전 쿼리와 동일한 중복 값 11이 있습니다. 두 번째 값 목록은 고유하지만 두 번째 값 목록인 테이블에 삽입된 1개의 레코드를 표시합니다. MySQL은 또한 1개의 레코드만 삽입되었으며 메시지에 1개의 경고가 생성되었음을 나타냅니다. 그런 다음 INSERT IGNORE 절을 사용하는 경우 MySQL이 경고를 제공한다고 가정할 수 있습니다.

아래 출력에서 ​​볼 수 있듯이 이 테이블에는 두 개의 레코드만 있습니다. 위 쿼리에서 제공한 첫 번째 값 목록은 간과됩니다.

>>선택하다*FROM data.minister;

결론:

MySQL Workbench 및 MySQL 명령줄 클라이언트 셸을 통해 중복 값에 대한 INSERT IGNORE의 필요한 모든 예를 수행했습니다.