• Home
  • LLMs
  • Python
  • Docker
  • Kubernetes
  • Java
  • Ubuntu
  • Maven
  • Archived
  • About
Oracle | UNIQUE
  1. Notes
  2. Créer une contrainte UNIQUE
  3. Créer une contrainte UNIQUE en utilisant un indexe existant
  4. La clé unique vs l'indexe unique

  1. Notes
    Points importants (voir les détails dans ce qui suit) :

    • Une clé unique peut être remplacée par la création d'un indexe unique, mais il faut être conscient des détails qui différent la clé unique d'un indexe unique.

    • Le plus important est de distinguer le rôle de chacun : les clés uniques sont conçues pour renforcer des contraintes d'intégrités alors que les indexes sont conçus pour renforcer la performance.

    • Dans certains cas, il peut être préférable de créer un indexe séparément de la clé unique.

    • Une clé unique définie une contrainte d'unicité sur une ou plusieurs colonnes de la table.

    • Les valeurs de ces colonnes combinées assurent l'unicité de chaque ligne de la table.

    • Une colonne qui compose la clé unique peuvt contenir la valeur nulle, à moins qu'une contrainte NOT NULL ait été définie sur cette colonne.

    • La clé unique ne s'applique pas si les colonnes qui composent la clé unique ont toutes des valeurs nulles.
  2. Créer une contrainte UNIQUE

    Ou :
    La création de la clé unique crée deux objets ; une clé unique et un indexe unique :

    • Vérifier l'existence de la clé unique dans le dictionnaire de données :

      Résultat de la requête :
    • Vérifier l'existence de l'indexe unique dans le dictionnaire de données :

      Résultat de la requête :
    • Si on essaye de supprimer cet indexe on obtiendra une erreur :

      Résultat de la requête :
    • La surpression de la clé unique supprimera aussi l'indexe :


      Résultat de la requête :
    Remarques :

    • Si la clé unique est une clé composée de plusieurs colonnes, alors il faut spécifier ces colonnes séparées par des points virgules (column1, column2, …), dans ce cas un seul indexe composé sera créé et associé à la contrainte.


    • Autrement, il faut créer des clés uniques séparées, dans ce cas chaque contrainte aura son propre indexe associé.

  3. Créer une contrainte UNIQUE en utilisant un indexe existant



    Vous pouvez résumer ces trois instructions SQL en une seule :

    Remarquez que la clé unique peut utiliser un indexe non-unique !

    Résultat de la requête :
    Notes :

    • Vous ne pouvez pas supprimer l'indexe une fois la clé unique est créée. Vous obteniez une erreur si vous essayez de le supprimer :


    • Par contre, il faut faire attention, la surpression de la clé unique ne supprimera pas l'indexe :


      Résultat de la requête :
  4. La clé unique vs l'indexe unique
    Les valeurs des colonnes de la clé unique doivent être uniques mais, au contraire de la clé primaire, elles peuvent être NULL.
    Ce qui veut dire que la clé unique est tout à fait équivalente à un indexe unique.
    Mais il faut savoir que sans la clé unique, les colonnes ne peuvent pas être utilisées comme clés étrangères.

    • Clé étrangère :
      • clé unique :


      • Indexe unique :



        Détails de l'erreur :

    • Insérer des valeurs NULL :
      Il est possible d'insérer plusieurs lignes avec des valeurs NULL pour la colonne qui forme la clé unique ou l'indexe unique.
      Dans le cas d'une contrainte (ou indexe) composée de plusieurs colonnes, alors il faut que toutes les valeurs de ces colonnes soient NULL.
      Il est important de retenir qu'un indexe conventionnel (B*Tree) n'insère pas d'entrées pour les valeurs NULL.




© 2025  mtitek