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.
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
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
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
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
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
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
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.
Quiz terminé avec succès Votre score : 2/6Précision : 0%Connectez-vous pour voir l'explication 1/6 1/6 < Previous Suivant >