Den UNIKKE begrænsning i SQL sikrer, at værdierne i en kolonne eller et sæt af kolonner er forskellige, hvilket forhindrer dubletter. I modsætning til en PRIMARY KEY tillader den flere NULL-værdier, da hver NULL behandles som unik, mens en primærnøgle kræver, at alle værdier er unikke og ikke-NULL.
Funktioner:
- Sikrer at kolonne(r) har unikke værdier.
- Flere NULL'er er tilladt.
- Kan gælde for en eller flere kolonner.
- Opretter ikke automatisk et indeks (selvom mange databaser gør det for ydeevnen).
- Kan tilføjes eller fjernes ved hjælp af ALTER TABLE.
Syntaks:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
I ovenstående syntaks:
- OPRET TABEL tabelnavn: opretter en ny tabel.
- kolonne1 datatype UNIK: definerer en kolonne med en datatype og håndhæver unikke værdier.
- kolonne 2 datatype: definerer en anden kolonne uden den unikke begrænsning.
- Gentag for yderligere kolonner efter behov.
Eksempel på brug af SQL UNIQUE Constraint
Eksempel 1: Oprettelse af en tabel med UNIKKE begrænsninger
Lad os oprette en kundetabel, hvor kolonnen E-mail skal være unik.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
I dette tilfælde skal hver kunde have en unik e-mailadresse. Hvis du forsøger at indsætte en dublet e-mail SQL vil rejse en fejl.
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');
Den tredje indsættelse mislykkes, fordi e-mailen [email protected] allerede findes i tabellen Kunder.
Eksempel 2: Brug af UNIQUE med flere kolonner
Vi kan også anvende UNIQUE-begrænsningen på flere kolonner for at sikre, at kombinationen af disse kolonner er unik.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
I dette eksempel skal kombinationen af kunde-id og produkt-id være unik, hvilket betyder, at en kunde ikke kan bestille det samme produkt mere end én gang.
Eksempel 3: Kontrol af unikke værdier ved hjælp af underforespørgsler
SQL giver dig mulighed for at kontrollere, om underforespørgsler er unikke. Du kan bruge nøgleordet UNIQUE i en underforespørgsel for at sikre, at resultaterne ikke indeholder duplikerede værdier.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
I dette eksempel tjekker vi, om der er nogen duplikerede OrderID-værdier for hver kunde i Order-tabellen. Hvis underforespørgslen returnerer unikke værdier, vil kunde-id'et blive valgt.
Vigtige pointer
- Evalueres til sand på en tom underforespørgsel.
- Returnerer kun sand, hvis der er unikke tupler til stede som output fra underforespørgslen (to tupler er unikke, hvis værdien af en attribut af de to tuples er forskellig).
- Returnerer sand, hvis underforespørgslen har to dublerede rækker med mindst én attribut som NULL.
Hvad sikrer den UNIKKE begrænsning i SQL?
- EN
Kolonne gemmer kun værdier, der forbliver ikke-duplikerede
strengværdi af
- B
Kolonne tillader værdier uden at kontrollere dubletter
- C
Kolonne accepterer flere identiske værdier i rækker
- D
Kolonne gemmer kun værdier, der altid ikke er NULL
UNIQUE sikrer, at alle værdier i kolonnen (eller kolonnegruppen) skal være forskellige, hvilket forhindrer duplikerede indtastninger.
Hvordan adskiller UNIQUE sig fra en PRIMÆR NØGLE?
statisk funktion i java
- EN
UNIQUE tillader mange NULL-værdier; primær nøgle gør det ikke
- B
UNIQUE fjerner NULLs; primær nøgle gemmer altid NULL
- C
UNIK styrker indeksering; primær nøgle forhindrer indekser
- D
UNIQUE gennemtvinger sortering; primær nøgle undgår at bestille
UNIQUE tillader flere NULL-værdier, fordi hver NULL betragtes som forskellig i modsætning til en PRIMÆR NØGLE, som fuldstændig forbyder NULL.
Hvad sker der, når du indsætter en dubletværdi i en UNIK kolonne?
- EN
SQL accepterer dublerede rækker og gemmer begge værdier
- B
SQL erstatter tidligere værdi med senest indsat
- C
SQL afviser duplikat og genererer en integritetsfejl
- D
SQL konverterer automatisk dubletværdi til en NULL
Hvis en værdi overtræder den UNIQUE begrænsning, blokerer SQL indsættelsen eller opdateringen og rapporterer en fejl.
Hvilket udsagn om UNIQUE og NULL er korrekt?
- EN
UNIQUE behandler alle NULL-værdier som lige store dubletter
grå kode
- B
UNIQUE behandler alle NULL-værdier som separate unikke rækker
- C
UNIQUE konverterer alle NULL-indtastninger til tomme strenge
- D
UNIQUE tillader kun NULL, når der ikke findes data i kolonnen
Flere NULL'er er tilladt, fordi hver NULL vurderes som en særskilt uforlignelig værdi under UNIQUE.
Hvorfor opretter mange databaser et indeks for UNIQUE?
- EN
At organisere værdier alfabetisk før indsættelse
- B
For at formatere numeriske data før lagring i tabel
- C
At konvertere NULL'er til unikke sekventielle værdier
- D
For at forbedre kontrol af dubletter under validering
Et indeks hjælper motoren med hurtigt at opdage duplikerede værdier, hvilket gør håndhævelsen af UNIQUE begrænsninger mere effektiv.
Hvad kontrollerer det UNIKKE søgeord i en underforespørgsel?
- EN
Sikrer at underforespørgsel returnerer nøjagtig én numerisk kolonne
- B
Sikrer at underforespørgselsoutput kun indeholder distinkte rækker
- C
Sikrer at underforespørgsel sammenligner værdier uden at bruge joinforbindelser
- D
Sikrer, at underforespørgsel ignorerer rækker, der indeholder NULL
UNIQUE validerer, at underforespørgslen ikke producerer dublerede tupler - hver returneret række skal afvige i mindst én attribut.
Quiz gennemførte med succes Din score: 2/6Nøjagtighed: 0 %Log ind for at se forklaring 1/6 1/6 < Previous Næste >