Constrângerea UNIQUE din SQL asigură că valorile dintr-o coloană sau dintr-un set de coloane sunt distincte, prevenind duplicarea. Spre deosebire de o cheie primară, aceasta permite mai multe valori NULL, deoarece fiecare NULL este tratat ca unic, în timp ce o cheie primară necesită ca toate valorile să fie unice și non-NULL.
Caracteristici:
- Se asigură că coloanele au valori unice.
- Sunt permise mai multe valori NULL.
- Se poate aplica la una sau mai multe coloane.
- Nu creează automat un index (deși multe baze de date fac pentru performanță).
- Poate fi adăugat sau eliminat folosind ALTER TABLE.
Sintaxă:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
În sintaxa de mai sus:
- CREATE TABLE table_name: creează un nou tabel.
- tipul de date coloana1 UNIQUE: definește o coloană cu un tip de date și impune valori unice.
- tipul de date coloana2: definește o altă coloană fără constrângerea unică.
- Repetați pentru coloane suplimentare după cum este necesar.
Exemplu de utilizare a constrângerii SQL UNIQUE
Exemplul 1: Crearea unui tabel cu constrângeri UNICE
Să creăm un tabel Clienți în care coloana E-mail trebuie să fie unică.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
În acest caz, fiecare client trebuie să aibă o adresă de e-mail unică. Dacă încercați să introduceți un e-mail duplicat SQL va genera o eroare.
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');
A treia inserare va eșua deoarece e-mailul [email protected] există deja în tabelul Clienți.
Exemplul 2: Utilizarea UNIQUE cu mai multe coloane
De asemenea, putem aplica constrângerea UNIQUE la mai multe coloane pentru a ne asigura că combinația acelor coloane este unică.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
În acest exemplu, combinația dintre CustomerID și ProductID trebuie să fie unică, ceea ce înseamnă că un client nu poate comanda același produs de mai multe ori.
Exemplul 3: Verificarea valorilor unice folosind subinterogări
SQL vă permite să verificați unicitatea în subinterogări. Puteți utiliza cuvântul cheie UNIQUE într-o subinterogare pentru a vă asigura că rezultatele nu conțin valori duplicate.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
În acest exemplu, verificăm dacă există valori duplicate OrderID pentru fiecare client în tabelul Comenzi. Dacă subinterogarea returnează valori unice, va fi selectat CustomerID.
Puncte importante
- Se evaluează la true într-o subinterogare goală.
- Returnează adevărat numai dacă există tupluri unice prezente ca rezultat al subinterogării (două tupluri sunt unice dacă valoarea oricărui atribut al celor două tupluri diferă).
- Returnează adevărat dacă interogarea secundară are două rânduri duplicat cu cel puțin un atribut ca NULL.
Ce asigură constrângerea UNIQUE în SQL?
- O
Coloana stochează numai valorile care rămân neduplicate
- B
Coloana permite valori fără a verifica duplicatele
- C
Coloana acceptă mai multe valori identice în rânduri
- D
Coloana stochează numai valorile care sunt întotdeauna non-NULL
10 din 10
UNIQUE se asigură că toate valorile din coloană (sau din grupul de coloane) trebuie să fie distincte, prevenind intrările duplicate.
Prin ce diferă UNIQUE de o CHEIE PRIMARĂ?
- O
UNIQUE permite multe valori NULL; cheia primară nu
- B
UNIQUE elimină NULL-urile; cheia primară stochează întotdeauna NULL
- C
indexarea forțelor unice; cheia primară împiedică indexurile
- D
UNIQUE impune sortarea; cheia primară evită comandarea
UNIQUE permite mai multe valori NULL, deoarece fiecare NULL este considerat diferit, spre deosebire de CHEIA PRIMARIA care interzice total NULL-urile.
Ce se întâmplă la inserarea unei valori duplicate într-o coloană UNICA?
- O
SQL acceptă rândurile duplicate și stochează ambele valori
- B
SQL înlocuiește valoarea anterioară cu cea mai recentă inserată
- C
SQL respinge duplicatul și generează o eroare de integritate
- D
SQL convertește automat valoarea duplicată într-un NULL
Dacă o valoare încalcă constrângerea UNIQUE, SQL blochează inserarea sau actualizarea și raportează o eroare.
Care afirmație despre UNIQUE și NULL este corectă?
- O
UNIQUE tratează toate valorile NULL ca duplicate egale
face în timp ce java
- B
UNIQUE tratează toate valorile NULL ca rânduri unice separate
- C
UNIQUE convertește toate intrările NULL în șiruri goale
- D
UNIQUE permite NULL numai atunci când nu există date în coloană
Sunt permise mai multe valori NULL deoarece fiecare NULL este evaluat ca o valoare distinctă incomparabilă în UNIQUE.
De ce multe baze de date creează un index pentru UNIQUE?
- O
Pentru a organiza valorile în ordine alfabetică înainte de inserare
- B
Pentru a formata datele numerice înainte de a le stoca în tabel
- C
Pentru a converti valorile NULL în valori secvențiale unice
- D
Pentru a îmbunătăți verificarea duplicatelor în timpul validării
Un index ajută motorul să detecteze rapid valorile duplicate, făcând aplicarea constrângerii UNIQUE mai eficientă.
Ce verifică cuvântul cheie UNIQUE într-o subinterogare?
- O
Se asigură că subinterogarea returnează exact o coloană numerică
- B
Se asigură că ieșirea subinterogării conține doar rânduri distincte
- C
Se asigură că subinterogarea compară valorile fără a utiliza îmbinări
- D
Se asigură că subinterogarea ignoră rândurile care conțin orice NULL
UNIQUE validează faptul că subinterogarea nu produce tuplu duplicat — fiecare rând returnat trebuie să difere în cel puțin un atribut.
Test completat cu succes Scorul dvs.: 2/6Precizie: 0%Conectați-vă pentru a vizualiza explicația 1/6 1/6 < Previous Următorul >