Ograničenje UNIQUE u SQL-u osigurava da su vrijednosti u stupcu ili skupu stupaca različite sprječavajući duplikate. Za razliku od PRIMARNOG KLJUČA, on dopušta više NULL vrijednosti budući da se svaka NULL tretira kao jedinstvena, dok primarni ključ zahtijeva da sve vrijednosti budu jedinstvene i ne-NULL.
Značajke:
- Osigurava da stupci imaju jedinstvene vrijednosti.
- Dopušteno je više NULL-ova.
- Može se primijeniti na jedan ili više stupaca.
- Ne stvara automatski indeks (iako mnoge baze podataka rade zbog performansi).
- Može se dodati ili ukloniti pomoću ALTER TABLE.
Sintaksa:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
U gornjoj sintaksi:
- CREATE TABLE table_name: stvara novu tablicu.
- tip podataka stupca1 UNIQUE: definira stupac s tipom podataka i nameće jedinstvene vrijednosti.
- tip podataka stupca2: definira drugi stupac bez jedinstvenog ograničenja.
- Po potrebi ponovite za dodatne stupce.
Primjer korištenja SQL UNIQUE ograničenja
Primjer 1: Stvaranje tablice s JEDINSTVENIM ograničenjima
Kreirajmo tablicu Kupci u kojoj stupac Email mora biti jedinstven.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
U ovom slučaju svaki korisnik mora imati jedinstvenu adresu e-pošte. Ako pokušate umetnuti duplikat e-pošte SQL pokrenut će pogrešku.
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');
Treće umetanje neće uspjeti jer adresa e-pošte [email protected] već postoji u tablici Kupci.
Primjer 2: Korištenje UNIQUE s više stupaca
Također možemo primijeniti ograničenje UNIQUE na više stupaca kako bismo osigurali da je kombinacija tih stupaca jedinstvena.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
U ovom primjeru kombinacija CustomerID-a i ProductID-a mora biti jedinstvena što znači da kupac ne može naručiti isti proizvod više od jednom.
Primjer 3: Provjera jedinstvenih vrijednosti pomoću podupita
SQL vam omogućuje provjeru jedinstvenosti podupita. Možete koristiti ključnu riječ UNIQUE u podupitu kako biste bili sigurni da rezultati ne sadrže duple vrijednosti.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
U ovom primjeru provjeravamo postoje li duplicirane vrijednosti OrderID-a za svakog kupca u tablici Narudžbe. Ako podupit vrati jedinstvene vrijednosti, bit će odabran CustomerID.
Važne točke
- Procjenjuje se na istinito na praznom podupitu.
- Vraća true samo ako postoje jedinstvene torke prisutne kao izlaz podupita (dvije torke su jedinstvene ako se vrijednost bilo kojeg atributa dviju torki razlikuje).
- Vraća true ako podupit ima dva dvostruka retka s barem jednim atributom NULL.
Što ograničenje UNIQUE osigurava u SQL-u?
- A
Stupac pohranjuje samo vrijednosti koje se ne ponavljaju
- B
Stupac dopušta vrijednosti bez provjere duplikata
- C
Stupac prihvaća više identičnih vrijednosti u recima
- D
Stupac pohranjuje samo vrijednosti koje uvijek nisu NULL
UNIQUE osigurava da sve vrijednosti u stupcu (ili grupi stupaca) moraju biti različite sprječavajući dvostruke unose.
Kako se UNIQUE razlikuje od PRIMARNOG KLJUČA?
- A
UNIQUE dopušta mnogo NULL vrijednosti; primarni ključ ne
- B
UNIQUE uklanja NULL-ove; primarni ključ uvijek pohranjuje NULL
- C
UNIQUE prisiljava indeksiranje; primarni ključ sprječava indekse
- D
UNIQUE nameće sortiranje; primarni ključ izbjegava redoslijed
UNIQUE dopušta više NULL vrijednosti jer se svaka NULL smatra različitom za razliku od PRIMARNOG KLJUČA koji u potpunosti zabranjuje NULL.
Što se događa kada se umetne duplicirana vrijednost u UNIQUE stupac?
- A
SQL prihvaća dupli red i pohranjuje obje vrijednosti
što je košnica
- B
SQL zamjenjuje raniju vrijednost posljednjom umetnutom
- C
SQL odbija duplikat i generira pogrešku integriteta
- D
SQL automatski pretvara dupliciranu vrijednost u NULL
Ako vrijednost krši UNIQUE ograničenje, SQL blokira umetanje ili ažuriranje i prijavljuje pogrešku.
Koja je izjava o UNIQUE i NULL točna?
- A
UNIQUE tretira sve NULL vrijednosti kao jednake duplikate
- B
UNIQUE tretira sve NULL vrijednosti kao zasebne jedinstvene retke
- C
UNIQUE pretvara sve NULL unose u prazne nizove
- D
UNIQUE dopušta NULL samo ako u stupcu nema podataka
Dopušteno je više NULL jer se svaki NULL procjenjuje kao posebna neusporediva vrijednost pod UNIQUE.
Zašto mnoge baze podataka stvaraju indeks za UNIQUE?
- A
Za organiziranje vrijednosti po abecedi prije umetanja
- B
Za formatiranje numeričkih podataka prije spremanja u tablicu
- C
Za pretvaranje NULL-ova u jedinstvene sekvencijalne vrijednosti
- D
Za poboljšanje provjere duplikata tijekom provjere valjanosti
Indeks pomaže motoru da brzo otkrije duplicirane vrijednosti čineći provedbu UNIQUE ograničenja učinkovitijom.
Što provjerava ključna riječ UNIQUE u podupitu?
- A
Osigurava da podupit vraća točno jedan numerički stupac
- B
Osigurava da izlaz podupita sadrži samo različite retke
- C
Osigurava da podupit uspoređuje vrijednosti bez upotrebe spojeva
- D
Osigurava da podupit zanemaruje retke koji sadrže bilo koju NULL
UNIQUE provjerava da podupit ne proizvodi duplicirane torke—svaki vraćeni red mora se razlikovati u barem jednom atributu.
Kviz uspješno završen Vaš rezultat: 2/6Točnost: 0%Prijavite se za pregled objašnjenja 1/6 1/6 < Previous Dalje >