logo

SQL | UNIK begrænsning

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.
Foreslået quiz Rediger quiz 6 spørgsmål

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

Forklaring:

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

Forklaring:

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

Forklaring:

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

Forklaring:

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

Forklaring:

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

Forklaring:

UNIQUE validerer, at underforespørgslen ikke producerer dublerede tupler - hver returneret række skal afvige i mindst én attribut.

SQL | UNIK begrænsningQuiz gennemførte med succes Din score:  2/6Nøjagtighed: 0 %Log ind for at se forklaring 1/6 1/6 < Previous Næste >