logo

SQL | Contrainte UNIQUE

La contrainte UNIQUE dans SQL garantit que les valeurs d'une colonne ou d'un ensemble de colonnes sont distinctes, évitant ainsi les doublons. Contrairement à une PRIMARY KEY, elle autorise plusieurs valeurs NULL puisque chaque NULL est traitée comme unique tandis qu'une clé primaire nécessite que toutes les valeurs soient uniques et non NULL.

Caractéristiques:

des sites comme bedpage
  • Garantit que les colonnes ont des valeurs uniques.
  • Plusieurs valeurs NULL sont autorisées.
  • Peut s'appliquer à une ou plusieurs colonnes.
  • Ne crée pas automatiquement d'index (bien que de nombreuses bases de données le fassent pour des raisons de performances).
  • Peut être ajouté ou supprimé à l’aide de ALTER TABLE.

Syntaxe:



CREATE TABLE table_name (  
 column1 datatype UNIQUE
 column2 datatype
 ...
);

Dans la syntaxe ci-dessus :

  • CREATE TABLE nom_table : crée un nouveau tableau.
  • type de données colonne1 UNIQUE : définit une colonne avec un type de données et applique des valeurs uniques.
  • Type de données colonne2 : définit une autre colonne sans la contrainte unique.
  • Répétez l’opération pour des colonnes supplémentaires si nécessaire.

Exemple d'utilisation de la contrainte SQL UNIQUE

Exemple 1 : Création d'une table avec des contraintes UNIQUES

Créons une table Clients où la colonne Email doit être unique.

CREATE TABLE Customers (  
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);

Dans ce cas chaque client doit disposer d’une adresse email unique. Si vous essayez d'insérer un e-mail en double SQL générera une erreur.

INSERT INTO Customers (CustomerID Name Email Country)  
VALUES (1 'John Doe' '[email protected]' 'USA');

INSERT INTO Customers (CustomerID Name Email Country)
VALUES (2 'Jane Smith' '[email protected]' 'Canada');

-- This will fail because '[email protected]' already exists
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (3 'Alice Johnson' '[email protected]' 'UK');

La troisième insertion échouera car l'e-mail [email protected] existe déjà dans la table Clients.

Exemple 2 : Utilisation de UNIQUE avec plusieurs colonnes

Nous pouvons également appliquer la contrainte UNIQUE à plusieurs colonnes pour garantir que la combinaison de ces colonnes est unique.

CREATE TABLE Orders (  
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);

Dans cet exemple, la combinaison de CustomerID et ProductID doit être unique, ce qui signifie qu'un client ne peut pas commander le même produit plus d'une fois.

Exemple 3 : Vérification de valeurs uniques à l'aide de sous-requêtes

SQL vous permet de vérifier l'unicité des sous-requêtes. Vous pouvez utiliser le mot clé UNIQUE dans une sous-requête pour vous assurer que les résultats ne contiennent pas de valeurs en double.

SELECT CustomerID  
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);

Dans cet exemple, nous vérifions s'il existe des valeurs OrderID en double pour chaque client dans la table Commandes. Si la sous-requête renvoie des valeurs uniques, le CustomerID sera sélectionné.

Points importants

  • Renvoie à true sur une sous-requête vide.
  • Renvoie vrai uniquement s'il existe des tuples uniques présents comme sortie de la sous-requête (deux tuples sont uniques si la valeur d'un attribut des deux tuples diffère).
  • Renvoie vrai si la sous-requête comporte deux lignes en double avec au moins un attribut NULL.
Quiz suggéré Edit Quiz 6 questions

Que garantit la contrainte UNIQUE en SQL ?

  • UN

    La colonne stocke uniquement les valeurs qui restent non dupliquées

  • B

    La colonne autorise les valeurs sans vérifier les doublons

  • C

    La colonne accepte plusieurs valeurs identiques dans les lignes

  • D

    La colonne stocke uniquement les valeurs qui sont toujours non NULL

Explication:

UNIQUE garantit que toutes les valeurs de la colonne (ou du groupe de colonnes) doivent être distinctes pour éviter les entrées en double.

En quoi UNIQUE diffère-t-il d'une CLÉ PRIMAIRE ?

  • UN

    UNIQUE autorise de nombreuses valeurs NULL ; la clé primaire ne fonctionne pas

  • B

    UNIQUE supprime les NULL ; la clé primaire stocke toujours NULL

  • C

    Indexation UNIQUE des forces ; la clé primaire empêche les index

  • D

    UNIQUE applique le tri ; la clé primaire évite la commande

Explication:

UNIQUE autorise plusieurs valeurs NULL car chaque NULL est considéré comme différent contrairement à une CLÉ PRIMAIRE qui interdit entièrement les valeurs NULL.

Que se passe-t-il lors de l'insertion d'une valeur en double dans une colonne UNIQUE ?

  • UN

    SQL accepte les lignes en double et stocke les deux valeurs

  • B

    SQL remplace la valeur précédente par la valeur la plus récemment insérée

  • C

    SQL rejette les doublons et génère une erreur d'intégrité

  • D

    SQL convertit automatiquement la valeur en double en NULL

Explication:

Si une valeur viole la contrainte UNIQUE, SQL bloque l'insertion ou la mise à jour et signale une erreur.

Quelle affirmation concernant UNIQUE et NULL est correcte ?

  • UN

    UNIQUE traite toutes les valeurs NULL comme des doublons égaux

  • B

    UNIQUE traite toutes les valeurs NULL comme des lignes uniques distinctes

  • C

    UNIQUE convertit toutes les entrées NULL en chaînes vides

  • D

    UNIQUE autorise NULL uniquement lorsqu'aucune donnée n'existe dans la colonne

Explication:

Plusieurs NULL sont autorisés car chaque NULL est évalué comme une valeur distincte et incomparable sous UNIQUE.

Pourquoi de nombreuses bases de données créent-elles un index pour UNIQUE ?

  • UN

    Pour organiser les valeurs par ordre alphabétique avant l'insertion

  • B

    Pour formater des données numériques avant de les stocker dans un tableau

  • C

    Pour convertir les valeurs NULL en valeurs séquentielles uniques

  • D

    Pour améliorer le contrôle des doublons lors de la validation

    concaténer les chaînes java
Explication:

Un index aide le moteur à détecter rapidement les valeurs en double, ce qui rend l'application des contraintes UNIQUE plus efficace.

Que vérifie le mot clé UNIQUE dans une sous-requête ?

  • UN

    Garantit que la sous-requête renvoie exactement une colonne numérique

  • B

    Garantit que la sortie de la sous-requête ne contient que des lignes distinctes

  • C

    Garantit que la sous-requête compare les valeurs sans utiliser de jointures

  • D

    Garantit que la sous-requête ignore les lignes contenant des valeurs NULL

Explication:

UNIQUE valide que la sous-requête ne produit aucun tuple en double : chaque ligne renvoyée doit différer par au moins un attribut.

SQL | Contrainte UNIQUEQuiz terminé avec succès Votre score :  2/6Précision : 0%Connectez-vous pour voir l'explication 1/6 1/6 < Previous Suivant >