Il vincolo UNIQUE in SQL garantisce che i valori in una colonna o in un insieme di colonne siano distinti evitando duplicati. A differenza di una CHIAVE PRIMARIA consente più valori NULL poiché ogni NULL viene trattato come unico mentre una chiave primaria richiede che tutti i valori siano univoci e non NULL.
Caratteristiche:
- Garantisce che le colonne abbiano valori univoci.
- Sono consentiti più NULL.
- Può applicarsi a una o più colonne.
- Non crea automaticamente un indice (sebbene molti database lo facciano per motivi di prestazioni).
- Può essere aggiunto o rimosso utilizzando ALTER TABLE.
Sintassi:
elenco collegato Java
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
Nella sintassi sopra:
- CREA TABELLA nome_tabella: crea una nuova tabella.
- tipo di dati colonna1 UNICO: definisce una colonna con un tipo di dati e applica valori univoci.
- tipo di dati colonna2: definisce un'altra colonna senza il vincolo univoco.
- Ripetere per le colonne aggiuntive secondo necessità.
Esempio di utilizzo del vincolo SQL UNIQUE
Esempio 1: creazione di una tabella con vincoli UNICI
Creiamo una tabella Clienti in cui la colonna Email deve essere univoca.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
In questo caso ogni cliente deve avere un indirizzo email univoco. Se provi a inserire un'e-mail duplicata SQL genererà un errore.
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');
Il terzo inserimento avrà esito negativo poiché l'e-mail [email protected] esiste già nella tabella Clienti.
Esempio 2: utilizzo di UNIQUE con più colonne
Possiamo anche applicare il vincolo UNIQUE a più colonne per garantire che la combinazione di tali colonne sia unica.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
In questo esempio la combinazione di CustomerID e ProductID deve essere univoca, il che significa che un cliente non può ordinare lo stesso prodotto più di una volta.
Esempio 3: controllo di valori univoci utilizzando sottoquery
SQL consente di verificare l'unicità nelle sottoquery. È possibile utilizzare la parola chiave UNIQUE in una sottoquery per garantire che i risultati non contengano valori duplicati.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
In questo esempio controlliamo se sono presenti valori OrderID duplicati per ciascun cliente nella tabella Orders. Se la sottoquery restituisce valori univoci, verrà selezionato CustomerID.
Punti importanti
- Restituisce true in una sottoquery vuota.
- Restituisce vero solo se sono presenti tuple univoche come output della sottoquery (due tuple sono uniche se il valore di qualsiasi attributo delle due tuple è diverso).
- Restituisce vero se la sottoquery ha due righe duplicate con almeno un attributo NULL.
Cosa garantisce il vincolo UNIQUE in SQL?
- UN
La colonna memorizza solo i valori che rimangono non duplicati
- B
La colonna consente valori senza controllare i duplicati
- C
La colonna accetta più valori identici nelle righe
- D
La colonna memorizza solo valori che sono sempre diversi da NULL
UNIQUE garantisce che tutti i valori nella colonna (o nel gruppo di colonne) debbano essere distinti evitando voci duplicate.
In cosa differisce UNIQUE da una CHIAVE PRIMARIA?
- UN
UNIQUE consente molti valori NULL; la chiave primaria no
- B
UNIQUE rimuove i NULL; la chiave primaria memorizza sempre NULL
- C
UNICO forza l'indicizzazione; la chiave primaria impedisce gli indici
- D
UNIQUE impone l'ordinamento; la chiave primaria evita l'ordinamento
UNIQUE consente più valori NULL perché ogni NULL è considerato diverso a differenza di una PRIMARY KEY che vieta completamente i NULL.
sistema operativo di rete
Cosa succede quando si inserisce un valore duplicato in una colonna UNICA?
- UN
SQL accetta righe duplicate e memorizza entrambi i valori
- B
SQL sostituisce il valore precedente con quello inserito più recentemente
- C
SQL rifiuta i duplicati e genera un errore di integrità
- D
SQL converte automaticamente il valore duplicato in un NULL
Se un valore viola il vincolo UNIQUE SQL blocca l'inserimento o l'aggiornamento e segnala un errore.
Quale affermazione su UNIQUE e NULL è corretta?
- UN
UNIQUE tratta tutti i valori NULL come duplicati uguali
- B
UNIQUE tratta tutti i valori NULL come righe univoche separate
- C
UNIQUE converte tutte le voci NULL in stringhe vuote
- D
UNIQUE consente NULL solo quando non esistono dati nella colonna
Sono consentiti più NULL perché ogni NULL viene valutato come un valore distinto e incomparabile in UNIQUE.
Perché molti database creano un indice per UNIQUE?
- UN
Per organizzare i valori in ordine alfabetico prima di inserirli
- B
Per formattare i dati numerici prima di memorizzarli nella tabella
- C
Per convertire NULL in valori sequenziali univoci
- D
Per migliorare il controllo dei duplicati durante la validazione
Un indice aiuta il motore a rilevare rapidamente i valori duplicati rendendo più efficiente l'applicazione del vincolo UNIQUE.
stringa al carattere Java
Cosa controlla la parola chiave UNIQUE in una sottoquery?
- UN
Garantisce che la sottoquery restituisca esattamente una colonna numerica
- B
Garantisce che l'output della sottoquery contenga solo righe distinte
- C
Garantisce che la sottoquery confronti i valori senza utilizzare i join
- D
Garantisce che la sottoquery ignori le righe che contengono NULL
UNIQUE verifica che la sottoquery non produca tuple duplicate: ciascuna riga restituita deve differire in almeno un attributo.
Quiz completato con successo Il tuo punteggio: 2/6Precisione: 0%Accedi per visualizzare la spiegazione 1/6 1/6 < Previous Avanti >