Maison  >  Article  >  base de données  >  Oracle supprime les données en double

Oracle supprime les données en double

王林
王林original
2023-05-08 09:55:376024parcourir

La base de données Oracle est un système de gestion de base de données très stable avec des fonctions puissantes et des performances stables. Dans notre travail quotidien, nous rencontrons souvent des situations dans lesquelles les requêtes de données et les opérations sur les données sont bloquées en raison de données en double. Cet article explique comment utiliser Oracle pour supprimer les données en double.

1. Qu'est-ce que les données en double ?

Dans la base de données, nous constatons souvent que certaines données sont répétées, c'est-à-dire que les mêmes données apparaissent plusieurs fois. Ces données apporteront de grandes difficultés à nos requêtes et opérations. Dans la base de données Oracle, nous pouvons utiliser l'opération de déduplication pour supprimer ces données en double.

2. Comment supprimer les données en double ?

Méthode 1 : Utilisation de ROWID

La première méthode consiste à supprimer via ROWID. ROWID est un identifiant unique attribué à chaque enregistrement dans le système Oracle, afin que nous puissions supprimer avec précision les enregistrements en double spécifiés via ROWID.

Comme indiqué ci-dessous :

DELETE FROM table_name A
WHERE A.ROWID >

ANY (SELECT B.ROWID
         FROM table_name B
        WHERE A.column1 = B.column1
          AND A.column2 = B.column2
          AND A.column3 = B.column3
          AND A.column4 = B.column4);

Parmi eux, table_name est le nom de la table qui doit supprimer les données en double, et column1, column2, column3 et column4 sont les noms de colonnes. qu'il faut comparer.

Méthode 2 : Utiliser l'opération de regroupement

Une autre méthode consiste à supprimer les données en double via une opération de regroupement. L'opération de regroupement est une méthode d'opération de données couramment utilisée dans la base de données Oracle. Elle peut regrouper des enregistrements avec les mêmes attributs et effectuer la même opération sur chaque groupe.

Comme indiqué ci-dessous :

DELETE FROM table_name
WHERE rowid IN

(SELECT max(rowid)
 FROM table_name
 GROUP BY column1, column2, column3, column4
 HAVING count(*) > 1);

Parmi eux, table_name est le nom de la table qui doit supprimer les données en double, et column1, column2, column3 et column4 sont les noms de colonnes qui doivent à comparer.

3. Comment éviter les données en double ?

En plus de supprimer les données en double, nous devons également prêter attention à la manière d'éviter l'apparition de données en double. Voici quelques méthodes pour éviter les données en double :

Méthode 1 : Ajouter des contraintes uniques

Lors de la création d'une table, vous pouvez ajouter des contraintes uniques pour garantir l'unicité de certaines colonnes et éviter l'apparition de données en double. Par exemple :

CREATE TABLE nom_table
(colonne1 varchar2(10) NON NULL,
colonne2 varchar2(10) NON NULL,
colonne3 varchar2(10) NON NULL,
colonne4 varchar2(10) NON NULL,
CLÉ PRIMAIRE (colonne1 , colonne2, colonne3, colonne4));

De cette façon, lorsque vous essayez d'insérer un enregistrement avec les mêmes valeurs de colonne​​en tant que ligne du tableau, la base de données signalera une erreur pour empêcher la duplication des données.

Méthode 2 : Utiliser des déclencheurs

Une autre méthode consiste à utiliser des déclencheurs pour effectuer les jugements et les opérations correspondants lors de l'insertion ou de la mise à jour d'enregistrements afin de garantir l'unicité des données. Par exemple :

CREATE TRIGGER trigger_name
BEFORE INSERT OR UPDATE ON table_name
FOR EACH ROW
DECLARE

v_exists NUMBER;

BEGIN

SELECT COUNT(*)
INTO v_exists
FROM table_name
WHERE column1 = :NEW.column1
  AND column2 = :NEW.column2
  AND column3 = :NEW.column3
  AND column4 = :NEW.column4;

IF v_exists > 0 THEN
  RAISE_APPLICATION_ERROR(-20001, 'Duplicate record found.');
END IF;

END;

Ce déclencheur sera exécuté avant les opérations d'insertion et de mise à jour pour déterminer si l'enregistrement nouvellement inséré is Duplique un enregistrement existant. S'il est dupliqué, une erreur sera générée.

Résumé :

Dans la base de données Oracle, la suppression des données en double est une tâche relativement courante. Nous pouvons les supprimer via ROWID ou des opérations de regroupement. De plus, nous pouvons éviter les données en double en ajoutant des contraintes uniques et en utilisant des déclencheurs. Toutes les méthodes ci-dessus peuvent rendre nos opérations de données plus stables et sécurisées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn