MySQL은 중복 데이터를 처리합니다.
MySQL은 중복 데이터를 처리합니다
일부 MySQL 데이터 테이블에는 중복 레코드가 있을 수 있으며 경우에 따라 중복의 존재를 허용합니다. data 이지만 때로는 이러한 중복 데이터를 삭제해야 할 때도 있습니다.
이 장에서는 데이터 테이블에 중복된 데이터가 나타나는 것을 방지하는 방법과 데이터 테이블에서 중복된 데이터를 삭제하는 방법을 소개합니다.
테이블에 중복된 데이터가 표시되는 것을 방지
MySQL 데이터 테이블의 지정된 필드를 PRIMARY KEY(기본 키) 또는 UNIQUE(고유) <로 설정할 수 있습니다. 🎜> 데이터의 고유성을 보장하기 위한 색인입니다. 예를 들어 보겠습니다. 다음 테이블에는 인덱스와 기본 키가 없으므로 테이블에는 여러 개의 중복 레코드가 허용됩니다.CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) );테이블에서 first_name 및 last_name 필드를 설정하려면 데이터를 반복할 수 없습니다. 이중 기본 키 모드를 설정하여 데이터의 고유성을 설정할 수 있습니다. 이중 기본 키를 설정하는 경우 해당 키의 기본값은 NULL일 수 없으며 NOT NULL로 설정할 수 있습니다. 아래와 같이
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) );고유 인덱스를 설정한 후 중복된 데이터를 삽입하면 SQL 문이 성공적으로 실행되지 않고 오류가 발생합니다.
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 1 row affected (0.00 sec) mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 0 rows affected (0.00 sec)INSERT IGNORE INTO 데이터를 삽입할 때 set 레코드의 고유성을 확인한 후 중복된 데이터가 삽입되면 오류가 반환되지 않고 경고만 반환됩니다. REPLACE INTO를 동일한 기본 또는 고유 레코드로 존재하는 경우 해당 레코드가 먼저 삭제됩니다. 그런 다음 새 레코드를 삽입하십시오.
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) )
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1;위 쿼리 문은 person_tbl 테이블의 중복 레코드 수를 반환합니다. 일반적으로 중복 값을 쿼리하려면 다음을 수행합니다.
- 중복될 수 있는 값이 포함된 열을 확인합니다.
- 열 선택 목록에서 COUNT(*)를 사용하여 나열된 열입니다.
- GROUP BY 절에 나열된 열입니다.
- HAVING 절은 반복 횟수를 1보다 크게 설정합니다.
mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl -> ORDER BY last_name;GROUP BY를 사용하여 데이터 테이블의 고유 데이터를 읽을 수도 있습니다.
mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name)
중복 데이터 삭제
데이터 테이블에서 중복 데이터를 삭제하려면 다음 SQL 문을 사용하면 됩니다.
mysql> CREATE TABLE tmp SELECT last_name, first_name, sex -> FROM person_tbl; -> GROUP BY (last_name, first_name); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl;물론 추가할 수도 있습니다. 데이터 테이블 INDEX(인덱스) 및 PRIMAY KEY(기본 키)에서 테이블의 중복 레코드를 삭제하는 간단한 방법입니다. 방법은 다음과 같습니다.
mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name);
추천 관련 동영상 튜토리얼: