logo

SQL | UNIK begränsning

Den UNIKA begränsningen i SQL säkerställer att värden i en kolumn eller uppsättning kolumner är distinkta och förhindrar dubbletter. Till skillnad från en PRIMARY KEY tillåter den flera NULL-värden eftersom varje NULL behandlas som unik medan en primärnyckel kräver att alla värden är unika och icke-NULL.

sammanlänkningssträng i java

Drag:

  • Säkerställer att kolumner har unika värden.
  • Flera NULLs är tillåtna.
  • Kan gälla en eller flera kolumner.
  • Skapar inte automatiskt ett index (även om många databaser gör det för prestanda).
  • Kan läggas till eller tas bort med ALTER TABLE.

Syntax:



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

I ovanstående syntax:

  • SKAPA TABELL tabellnamn: skapar en ny tabell.
  • kolumn1 datatyp UNIK: definierar en kolumn med en datatyp och tvingar fram unika värden.
  • kolumn 2 datatyp: definierar en annan kolumn utan den unika begränsningen.
  • Upprepa för ytterligare kolumner vid behov.

Exempel på användning av SQL UNIQUE Constraint

Exempel 1: Skapa en tabell med UNIKA begränsningar

Låt oss skapa en kundtabell där E-postkolumnen måste vara unik.

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

I detta fall måste varje kund ha en unik e-postadress. Om du försöker infoga en duplicerad e-post SQL kommer att skapa ett fel.

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 infogningen misslyckas eftersom e-posten [email protected] redan finns i tabellen Kunder.

Exempel 2: Använd UNIQUE med flera kolumner

Vi kan också tillämpa UNIQUE-begränsningen på flera kolumner för att säkerställa att kombinationen av dessa kolumner är unik.

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

I det här exemplet måste kombinationen av Kund-ID och Produkt-ID vara unik, vilket innebär att en kund inte kan beställa samma produkt mer än en gång.

Exempel 3: Söka efter unika värden med hjälp av underfrågor

SQL låter dig kontrollera om det är unikt i underfrågor. Du kan använda nyckelordet UNIQUE i en underfråga för att säkerställa att resultaten inte innehåller dubbletter av värden.

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

I det här exemplet kontrollerar vi om det finns några dubbletter av OrderID-värden för varje kund i ordertabellen. Om underfrågan returnerar unika värden kommer kund-ID att väljas.

Viktiga poäng

  • Utvärderas till sant på en tom underfråga.
  • Returnerar bara sant om det finns unika tupler som utdata från underfrågan (två tupler är unika om värdet på något attribut för de två tuplarna skiljer sig åt).
  • Returnerar sant om underfrågan har två dubbletter av rader med minst ett attribut som NULL.
Förslag på frågesport Redigera frågesport 6 frågor

Vad säkerställer UNIQUE-begränsningen i SQL?

  • A

    Kolumn lagrar endast värden som förblir icke-duplicerade

  • B

    Kolumn tillåter värden utan att kontrollera dubbletter

  • C

    Kolumn accepterar flera identiska värden i rader

  • D

    Kolumn lagrar endast värden som alltid är icke-NULL

Förklaring:

UNIQUE säkerställer att alla värden i kolumnen (eller kolumngruppen) måste vara distinkta och förhindrar dubbla poster.

Hur skiljer sig UNIQUE från en PRIMÄRNYCKEL?

instans av
  • A

    UNIQUE tillåter många NULL-värden; primärnyckeln inte

  • B

    UNIQUE tar bort NULLs; primärnyckeln lagrar alltid NULL

  • C

    UNIKA krafter indexering; primärnyckel förhindrar index

  • D

    UNIQUE upprätthåller sortering; primärnyckel undviker beställning

Förklaring:

UNIQUE tillåter flera NULL-värden eftersom varje NULL anses annorlunda till skillnad från en PRIMÄRNYCKEL som helt förbjuder NULL.

Vad händer när du infogar ett dubblettvärde i en UNIK kolumn?

  • A

    SQL accepterar dubbletter av rader och lagrar båda värdena

    es5 vs es6
  • B

    SQL ersätter tidigare värde med senast infogat

  • C

    SQL avvisar dubbletter och genererar ett integritetsfel

  • D

    SQL konverterar dubblettvärden till ett NULL automatiskt

Förklaring:

Om ett värde bryter mot den UNIKA begränsningen blockerar SQL infogningen eller uppdateringen och rapporterar ett fel.

Vilket påstående om UNIQUE och NULL är korrekt?

  • A

    UNIQUE behandlar alla NULL-värden som lika dubbletter

  • B

    UNIQUE behandlar alla NULL-värden som separata unika rader

    int till sträng
  • C

    UNIQUE konverterar alla NULL-poster till tomma strängar

  • D

    UNIQUE tillåter endast NULL när inga data finns i kolumnen

Förklaring:

Flera NULLs är tillåtna eftersom varje NULL utvärderas som ett distinkt ojämförligt värde under UNIQUE.

Varför skapar många databaser ett index för UNIQUE?

  • A

    För att ordna värden alfabetiskt innan du infogar

  • B

    För att formatera numerisk data innan lagring i tabell

  • C

    Att konvertera NULL till unika sekventiella värden

  • D

    För att förbättra kontrollen av dubbletter under validering

Förklaring:

Ett index hjälper motorn att snabbt upptäcka dubbletter av värden vilket gör UNIQUE begränsningsupprätthållandet mer effektivt.

Vad kontrollerar det UNIKA nyckelordet i en underfråga?

gjutsnöre som int
  • A

    Säkerställer att underfrågan returnerar exakt en numerisk kolumn

  • B

    Säkerställer att underfrågans utdata endast innehåller distinkta rader

  • C

    Säkerställer att underfrågan jämför värden utan att använda kopplingar

  • D

    Säkerställer att underfrågan ignorerar rader som innehåller någon NULL

Förklaring:

UNIQUE validerar att underfrågan inte producerar några dubbletter – varje returnerad rad måste skilja sig åt i minst ett attribut.

SQL | UNIK begränsningQuiz har slutförts framgångsrikt. Ditt resultat:  2/6Noggrannhet: 0 %Logga in för att se förklaring 1/6 1/6 < Previous Nästa >