Die UNIQUE-Einschränkung in SQL stellt sicher, dass die Werte in einer Spalte oder einem Spaltensatz eindeutig sind und Duplikate verhindert werden. Im Gegensatz zu einem PRIMÄRSCHLÜSSEL sind mehrere NULL-Werte zulässig, da jeder NULL-Wert als eindeutig behandelt wird, während bei einem Primärschlüssel alle Werte eindeutig und nicht NULL sein müssen.
Merkmale:
- Stellt sicher, dass die Spalten eindeutige Werte haben.
- Mehrere NULL-Werte sind zulässig.
- Kann auf eine oder mehrere Spalten angewendet werden.
- Erstellt nicht automatisch einen Index (obwohl viele Datenbanken dies aus Leistungsgründen tun).
- Kann mit ALTER TABLE hinzugefügt oder entfernt werden.
Syntax:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
In der obigen Syntax:
Java-Listenfeld
- CREATE TABLE Tabellenname: erstellt eine neue Tabelle.
- Spalte1 Datentyp UNIQUE: Definiert eine Spalte mit einem Datentyp und erzwingt eindeutige Werte.
- Datentyp Spalte2: Definiert eine andere Spalte ohne die Eindeutigkeitsbeschränkung.
- Wiederholen Sie diesen Vorgang nach Bedarf für weitere Spalten.
Beispiel für die Verwendung der SQL UNIQUE-Einschränkung
Beispiel 1: Erstellen einer Tabelle mit UNIQUE-Einschränkungen
Erstellen wir eine Kundentabelle, in der die E-Mail-Spalte eindeutig sein muss.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
In diesem Fall muss jeder Kunde eine eindeutige E-Mail-Adresse haben. Wenn Sie versuchen, eine doppelte E-Mail einzufügen SQL wird einen Fehler auslösen.
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');
Die dritte Einfügung schlägt fehl, da die E-Mail-Adresse [email protected] bereits in der Tabelle „Customers“ vorhanden ist.
Beispiel 2: Verwendung von UNIQUE mit mehreren Spalten
Wir können die UNIQUE-Einschränkung auch auf mehrere Spalten anwenden, um sicherzustellen, dass die Kombination dieser Spalten eindeutig ist.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
In diesem Beispiel muss die Kombination aus CustomerID und ProductID eindeutig sein, was bedeutet, dass ein Kunde das gleiche Produkt nicht mehr als einmal bestellen kann.
Beispiel 3: Überprüfung auf eindeutige Werte mithilfe von Unterabfragen
Mit SQL können Sie Unterabfragen auf Eindeutigkeit prüfen. Sie können das Schlüsselwort UNIQUE in einer Unterabfrage verwenden, um sicherzustellen, dass die Ergebnisse keine doppelten Werte enthalten.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
In diesem Beispiel prüfen wir, ob für jeden Kunden in der Tabelle „Bestellungen“ doppelte OrderID-Werte vorhanden sind. Wenn die Unterabfrage eindeutige Werte zurückgibt, wird die Kunden-ID ausgewählt.
Wichtige Punkte
- Wird bei einer leeren Unterabfrage als wahr ausgewertet.
- Gibt nur dann „true“ zurück, wenn als Ausgabe der Unterabfrage eindeutige Tupel vorhanden sind (zwei Tupel sind eindeutig, wenn der Wert eines Attributs der beiden Tupel unterschiedlich ist).
- Gibt „true“ zurück, wenn die Unterabfrage zwei doppelte Zeilen mit mindestens einem Attribut als NULL enthält.
Was stellt die UNIQUE-Einschränkung in SQL sicher?
- A
Die Spalte speichert nur Werte, die nicht dupliziert bleiben
- B
Die Spalte lässt Werte zu, ohne Duplikate zu prüfen
Greifach-Normalform
- C
Die Spalte akzeptiert mehrere identische Werte in Zeilen
- D
Die Spalte speichert nur Werte, die immer nicht NULL sind
UNIQUE stellt sicher, dass alle Werte in der Spalte (oder Spaltengruppe) eindeutig sein müssen, um doppelte Einträge zu verhindern.
Wie unterscheidet sich UNIQUE von einem PRIMARY KEY?
- A
UNIQUE erlaubt viele NULL-Werte; Primärschlüssel nicht
- B
UNIQUE entfernt NULL-Werte; Der Primärschlüssel speichert immer NULL
- C
UNIQUE erzwingt die Indizierung; Primärschlüssel verhindert Indizes
- D
UNIQUE erzwingt die Sortierung; Der Primärschlüssel vermeidet die Bestellung
UNIQUE lässt mehrere NULL-Werte zu, da jeder NULL-Wert als unterschiedlich betrachtet wird, im Gegensatz zu einem PRIMARY KEY, der NULL-Werte vollständig verbietet.
Was passiert, wenn ein doppelter Wert in eine UNIQUE-Spalte eingefügt wird?
- A
SQL akzeptiert doppelte Zeilen und speichert beide Werte
- B
SQL ersetzt den früheren Wert durch den zuletzt eingefügten
- C
SQL lehnt Duplikate ab und generiert einen Integritätsfehler
- D
SQL konvertiert doppelte Werte automatisch in NULL
Wenn ein Wert gegen die UNIQUE-Einschränkung verstößt, blockiert SQL das Einfügen oder Aktualisieren und meldet einen Fehler.
Welche Aussage zu UNIQUE und NULL ist richtig?
- A
UNIQUE behandelt alle NULL-Werte als gleiche Duplikate
- B
UNIQUE behandelt alle NULL-Werte als separate eindeutige Zeilen
- C
UNIQUE wandelt alle NULL-Einträge in leere Strings um
VLC-Videos von YouTube herunterladen
- D
UNIQUE lässt NULL nur zu, wenn in der Spalte keine Daten vorhanden sind
Mehrere NULL-Werte sind zulässig, da jeder NULL-Wert unter UNIQUE als eindeutiger, nicht vergleichbarer Wert ausgewertet wird.
Warum erstellen viele Datenbanken einen Index für UNIQUE?
- A
Um Werte vor dem Einfügen alphabetisch zu ordnen
- B
Zum Formatieren numerischer Daten vor dem Speichern in einer Tabelle
- C
Um NULL-Werte in eindeutige sequentielle Werte umzuwandeln
- D
Zur Verbesserung der Duplikatprüfung während der Validierung
Ein Index hilft der Engine, doppelte Werte schnell zu erkennen, wodurch die Durchsetzung von UNIQUE-Einschränkungen effizienter wird.
Was prüft das Schlüsselwort UNIQUE in einer Unterabfrage?
- A
Stellt sicher, dass die Unterabfrage genau eine numerische Spalte zurückgibt
- B
Stellt sicher, dass die Ausgabe der Unterabfrage nur unterschiedliche Zeilen enthält
Java-Programme
- C
Stellt sicher, dass die Unterabfrage Werte vergleicht, ohne Verknüpfungen zu verwenden
- D
Stellt sicher, dass die Unterabfrage Zeilen ignoriert, die NULL enthalten
UNIQUE überprüft, ob die Unterabfrage keine doppelten Tupel erzeugt – jede zurückgegebene Zeile muss sich in mindestens einem Attribut unterscheiden.
Quiz erfolgreich abgeschlossen. Ihre Punktzahl: 2/6Genauigkeit : 0%Melden Sie sich an, um die Erklärung anzuzeigen 1/6 1/6 < Previous Weiter >