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.
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
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
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
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
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
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
UNIQUE validerar att underfrågan inte producerar några dubbletter – varje returnerad rad måste skilja sig åt i minst ett attribut.
Quiz 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 >