logo

SQL | UNIK begrensning

Den UNIKE begrensningen i SQL sikrer at verdiene i en kolonne eller et sett med kolonner er distinkte og forhindrer duplikater. I motsetning til en PRIMARY KEY tillater den flere NULL-verdier siden hver NULL behandles som unik mens en primærnøkkel krever at alle verdier er unike og ikke-NULL.

Funksjoner:

  • Sikrer at kolonne(r) har unike verdier.
  • Flere NULLer er tillatt.
  • Kan gjelde for én eller flere kolonner.
  • Oppretter ikke automatisk en indeks (selv om mange databaser gjør det for ytelsen).
  • Kan legges til eller fjernes ved hjelp av ALTER TABLE.

Syntaks:



CREATE TABLE table_name (  
 column1 datatype UNIQUE
 column2 datatype
 ...
);

I syntaksen ovenfor:

  • CREATE TABLE tabellnavn: oppretter en ny tabell.
  • kolonne1 datatype UNIK: definerer en kolonne med en datatype og håndhever unike verdier.
  • kolonne 2 datatype: definerer en annen kolonne uten den unike begrensningen.
  • Gjenta for flere kolonner etter behov.

Eksempel på bruk av SQL UNIQUE-begrensningen

Eksempel 1: Lage en tabell med UNIKE begrensninger

La oss lage en kundetabell der E-post-kolonnen må være unik.

CREATE TABLE Customers (  
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);

I dette tilfellet må hver kunde ha en unik e-postadresse. Hvis du prøver å sette inn en duplikat e-post SQL vil oppstå en feil.

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 innsettingen mislykkes fordi e-posten [email protected] allerede finnes i Kunder-tabellen.

Eksempel 2: Bruk av UNIQUE med flere kolonner

Vi kan også bruke UNIQUE-begrensningen på flere kolonner for å sikre at kombinasjonen av disse kolonnene er unik.

CREATE TABLE Orders (  
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);

I dette eksemplet må kombinasjonen av kunde-ID og produkt-ID være unik, noe som betyr at en kunde ikke kan bestille det samme produktet mer enn én gang.

Eksempel 3: Se etter unike verdier ved hjelp av underspørringer

SQL lar deg se etter unikhet i underspørringer. Du kan bruke UNIQUE nøkkelordet i en underspørring for å sikre at resultatene ikke inneholder dupliserte verdier.

SELECT CustomerID  
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);

I dette eksemplet sjekker vi om det er noen dupliserte OrderID-verdier for hver kunde i Order-tabellen. Hvis underspørringen returnerer unike verdier, velges kunde-ID.

Viktige poeng

  • Evalueres til sann på en tom underspørring.
  • Returnerer bare sant hvis det er unike tupler til stede som utdata fra underspørringen (to tupler er unike hvis verdien av en hvilken som helst attributt til de to tuplene er forskjellig).
  • Returnerer sann hvis underspørringen har to dupliserte rader med minst ett attributt som NULL.
Foreslått quiz Rediger Quiz 6 spørsmål

Hva sikrer UNIQUE-begrensningen i SQL?

  • EN

    Kolonne lagrer bare verdier som forblir ikke-dupliserte

    stabel i ds
  • B

    Kolonne tillater verdier uten å sjekke duplikater

  • C

    Kolonne godtar flere identiske verdier i rader

  • D

    Kolonne lagrer bare verdier som alltid ikke er NULL

Forklaring:

UNIQUE sikrer at alle verdier i kolonnen (eller kolonnegruppen) må være distinkte og forhindrer dupliserte oppføringer.

Hvordan skiller UNIQUE seg fra en PRIMÆR NØKKEL?

hvis av rudyard kipling sammendrag
  • EN

    UNIQUE tillater mange NULL-verdier; primærnøkkel gjør det ikke

  • B

    UNIQUE fjerner NULL-er; primærnøkkelen lagrer alltid NULL

  • C

    UNIKE styrker indeksering; primærnøkkel forhindrer indekser

  • D

    UNIQUE håndhever sortering; primærnøkkel unngår bestilling

Forklaring:

UNIQUE tillater flere NULL-verdier fordi hver NULL anses som forskjellig i motsetning til en PRIMÆR NØKKEL som forbyr NULL fullstendig.

Hva skjer når du setter inn en duplikatverdi i en UNIK kolonne?

  • EN

    SQL godtar dupliserte rader og lagrer begge verdiene

  • B

    SQL erstatter tidligere verdi med sist satt inn

  • C

    SQL avviser duplikat og genererer en integritetsfeil

  • D

    SQL konverterer duplikatverdier til en NULL automatisk

Forklaring:

Hvis en verdi bryter med UNIQUE-begrensningen, blokkerer SQL innsettingen eller oppdateringen og rapporterer en feil.

Hvilken påstand om UNIQUE og NULL er riktig?

  • EN

    UNIQUE behandler alle NULL-verdier som like duplikater

    peker i c
  • B

    UNIQUE behandler alle NULL-verdier som separate unike rader

  • C

    UNIQUE konverterer alle NULL-oppføringer til tomme strenger

  • D

    UNIQUE tillater NULL bare når det ikke finnes data i kolonnen

Forklaring:

Flere NULL-er er tillatt fordi hver NULL blir evaluert som en distinkt uforlignelig verdi under UNIQUE.

Hvorfor oppretter mange databaser en indeks for UNIQUE?

  • EN

    For å organisere verdier alfabetisk før du setter inn

  • B

    For å formatere numeriske data før lagring i tabellen

  • C

    For å konvertere NULL-er til unike sekvensielle verdier

  • D

    For å forbedre kontrollen av duplikater under validering

Forklaring:

En indeks hjelper motoren med å raskt oppdage dupliserte verdier, noe som gjør håndhevingen av UNIQUE begrensning mer effektiv.

Hva sjekker det UNIKE søkeordet i en underspørring?

  • EN

    Sikrer at underspørringen returnerer nøyaktig én numerisk kolonne

  • B

    Sikrer at underspørringsutdata bare inneholder distinkte rader

  • C

    Sikrer at underspørring sammenligner verdier uten å bruke sammenføyninger

  • D

    Sørger for at underspørringen ignorerer rader som inneholder NULL

Forklaring:

UNIQUE validerer at underspørringen ikke produserer dupliserte tupler – hver returnerte rad må være forskjellig i minst ett attributt.

SQL | UNIK begrensningQuiz fullførte poengsummen din:  2/6Nøyaktighet: 0 %Logg inn for å se forklaring 1/6 1/6 < Previous Neste >