La UNIQUE KEY in SQL
In SQL, una UNIQUE KEY è un vincolo utilizzato per garantire che tutti i valori in una colonna o in un gruppo di colonne siano unici. Questo vincolo è essenziale per mantenere l'integrità dei dati e per evitare duplicati in specifici campi del database.
In questa pagina, esploreremo in dettaglio cos'è una UNIQUE KEY, come crearla, i suoi vantaggi, e le migliori pratiche per utilizzarla efficacemente.
UNIQUE KEY in SQL
Una UNIQUE KEY, o chiave unica, è un vincolo che assicura che i valori di una colonna (o di un insieme di colonne) siano unici in tutte le righe di una tabella. A differenza della PRIMARY KEY, una tabella può avere più di una UNIQUE KEY. Tuttavia, a differenza della PRIMARY KEY, le colonne che compongono una UNIQUE KEY possono accettare valori NULL, anche se solo un valore NULL per colonna è permesso.
Differenza tra PRIMARY KEY e UNIQUE KEY
PRIMARY KEY:
Non può contenere valori NULL.
Una sola PRIMARY KEY per tabella.
Utilizzata principalmente per identificare in modo univoco una riga in una tabella.
UNIQUE KEY:
Può contenere un solo valore NULL per colonna.
Più di una UNIQUE KEY per tabella.
Utilizzata per garantire l'unicità dei dati in una colonna o in un insieme di colonne.
Creazione di una UNIQUE KEY in SQL
Creazione durante la Definizione della Tabella
È possibile definire una UNIQUE KEY al momento della creazione della tabella utilizzando l'istruzione CREATE TABLE. Ecco un esempio:
CREATE TABLE utenti (
id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE,
username VARCHAR(255),
UNIQUE (username)
);
In questo esempio, la colonna email ha un vincolo di chiave unica, garantendo che ogni email nella tabella utenti sia unica. Inoltre, il vincolo UNIQUE (username) assicura che ogni username sia unico.
Aggiunta di una UNIQUE KEY a una tabella esistente
Se la tabella esiste già, è possibile aggiungere una UNIQUE KEY utilizzando l'istruzione ALTER TABLE. Ecco come farlo:
ALTER TABLE utenti
ADD CONSTRAINT unique_email UNIQUE (email);
In questo esempio, abbiamo aggiunto un vincolo di chiave unica sulla colonna email nella tabella utenti.
Vantaggi dell'uso di UNIQUE KEY
Il vincolo UNIQUE KEY garantisce che i dati inseriti in una colonna o in un insieme di colonne siano unici, prevenendo duplicati non desiderati.
Gli indici creati automaticamente con le chiavi uniche possono migliorare le prestazioni delle query, specialmente quelle che cercano di trovare righe basate sui valori delle colonne con vincoli di chiave unica.
Assicurando che i dati siano unici, si riduce la necessità di controlli e pulizia dei dati duplicati, semplificando così la manutenzione del database.
Creazione di una UNIQUE KEY su più colonne
È possibile creare una chiave unica su più colonne per garantire che la combinazione di valori in queste colonne sia unica. Ecco un esempio:
CREATE TABLE ordini (
id INT PRIMARY KEY,
cliente_id INT,
prodotto_id INT,
data_ordine DATE,
UNIQUE (cliente_id, prodotto_id)
);
In questo esempio, la combinazione di cliente_id e prodotto_id deve essere unica, impedendo che lo stesso cliente ordini lo stesso prodotto più di una volta senza una nuova riga.
Per verificare l'unicità dei dati esistenti prima di aggiungere un vincolo di chiave unica, è possibile utilizzare una query con GROUP BY e HAVING. Ecco un esempio:
SELECT email, COUNT(*)
FROM utenti
GROUP BY email
HAVING COUNT(*) > 1;
Conclusione
Le chiavi uniche in SQL sono strumenti potenti per garantire l'integrità dei dati e migliorare le prestazioni delle query. Comprendere come creare, utilizzare e gestire le chiavi uniche è fondamentale per chiunque lavori con i database.
Indice pagine di sql
Indice sql