>  기사  >  데이터 베이스  >  오라클 데이터 중복 제거

오라클 데이터 중복 제거

王林
王林원래의
2023-05-18 10:03:081050검색

데이터베이스에서 중복 데이터는 삭제해야 하는 개체 중 하나인 경우가 많습니다. Oracle 데이터베이스는 중복 데이터를 제거하는 다양한 방법을 제공하며 이 문서에서는 그 중 몇 가지를 소개합니다.

1. UNIQUE 제약 조건 사용

UNIQUE 제약 조건은 각 테이블의 열이 고유한 값을 저장하도록 하기 위해 Oracle 데이터베이스에서 사용하는 메커니즘입니다. 테이블에서 중복된 데이터를 삭제하려면 중복 제거가 필요한 열에 UNIQUE 제약 조건을 추가한 후 INSERT IGNORE 또는 REPLACE INTO 문을 통해 데이터를 삽입하면 됩니다. 삽입 시 중복된 데이터가 발견되면 무시되거나 새로운 데이터로 대체됩니다.

예를 들어 학생 ID 번호와 이름이 포함된 학생이라는 테이블이 있습니다. 학생 ID의 고유성을 보장하려면 다음 명령문을 사용할 수 있습니다.

ALTER TABLE students ADD CONSTRAINT unique_stu_id UNIQUE (stu_id);

이 명령문에서는 stu_id 열에 있는 데이터의 고유성을 보장하기 위해 학생 테이블에 UNIQUE 제약 조건을 추가합니다.

2. ROWID 사용

ROWID는 Oracle 데이터베이스의 매우 특별한 열로, 데이터의 각 행을 고유하게 식별할 수 있습니다. ROWID를 통해 중복된 데이터를 삭제할 수 있습니다. 다음은 ROWID를 사용하여 중복 데이터를 제거하는 예입니다.

DELETE FROM students WHERE ROWID NOT IN (SELECT MAX (ROWID) FROM students GROUP BY stu_id, name);

이 문에서는 하위 쿼리를 사용하여 반복되는 각각의 stu_id 및 이름 조합에서 ROWID 값이 가장 큰 데이터 행을 찾은 다음 이를 유지하고, 남은 데이터.

3. 임시 테이블 사용

임시 테이블을 사용하여 중복 데이터를 제거하는 것도 자주 사용되는 방법입니다. 먼저 임시 테이블을 생성한 다음 중복 제거해야 할 데이터를 임시 테이블에 삽입한 다음 원본 테이블의 데이터를 삭제하고 마지막으로 임시 테이블의 데이터를 원본 테이블에 다시 삽입해야 합니다. 이 방법을 사용하면 데이터 무결성과 일관성을 보장할 수 있지만 시간과 공간이 더 많이 소요됩니다.

다음은 임시 테이블을 사용하여 중복 데이터를 삭제하는 예입니다.

CREATE TABLE students_new AS SELECT DISTINCT * FROM students;

TRUNCATE TABLE students;

INSERT INTO students SELECT * FROM students_new;

DROP TABLE students_new;

이 구문에서는 Students_new라는 임시 테이블을 생성하고, Students 테이블의 중복 제거된 데이터를 임시 테이블에 삽입한 후 삭제합니다. 마지막으로 학생 테이블의 데이터가 학생 테이블에 다시 삽입되어 중복 제거 작업이 완료됩니다.

4. CTE 사용

CTE(Common Table Expression)는 SQL 문 내에 임시 테이블을 정의할 수 있는 방법입니다. CTE를 사용하면 하나의 SQL 문에서 데이터 중복 제거 작업을 완료할 수 있습니다. 다음은 CTE를 사용하여 중복 데이터를 삭제하는 예입니다.

WITH CTE AS (
  SELECT stu_id, name,
    ROW_NUMBER() OVER (PARTITION BY stu_id, name ORDER BY ROWID) RN
  FROM students
)
DELETE FROM CTE WHERE RN > 1;

이 문에서는 WITH 키워드를 사용하여 CTE라는 임시 테이블을 정의한 다음 ROW_NUMBER 함수를 사용하여 stu_id 및 name에 따라 데이터의 각 행에 번호를 매깁니다. , 마지막으로 행 번호가 1보다 큰 데이터를 삭제하여 중복 제거 작업을 완료합니다.

요약

위의 방법은 Oracle 데이터베이스에서 중복 데이터를 효과적으로 삭제할 수 있습니다. 어떤 방법을 선택할지는 실제 상황과 필요에 따라 다릅니다. 예를 들어, 적은 양의 중복된 데이터를 빠르게 삭제하고 싶다면 두 번째 방법을 사용하고, 데이터 양이 많으면 세 번째 방법이나 네 번째 방법을 사용할 수 있습니다. 즉, 실제 상황에 따라 중복 데이터를 삭제하는 데 가장 적합한 방법을 선택해야 하며, 데이터 손실 및 운영 오류를 방지하기 위해 데이터를 삭제하기 전에 백업 및 테스트를 수행해야 합니다.

위 내용은 오라클 데이터 중복 제거의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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