Zusammenfassung :In diesem Tutorial erfahren Sie, wie Sie den SQLite UNIQUE
verwenden Einschränkung, um sicherzustellen, dass alle Werte in einer Spalte oder einer Gruppe von Spalten eindeutig sind.
Einführung in SQLite UNIQUE
Einschränkung
Ein UNIQUE
Einschränkung stellt sicher, dass alle Werte in einer Spalte oder einer Gruppe von Spalten voneinander verschieden oder eindeutig sind.
Um einen UNIQUE
zu definieren Einschränkung verwenden Sie den UNIQUE
Schlüsselwort gefolgt von einer oder mehreren Spalten.
Sie können einen UNIQUE
definieren Einschränkung auf Spalten- oder Tabellenebene. Nur auf Tabellenebene können Sie einen UNIQUE
definieren Einschränkung über mehrere Spalten hinweg.
Im Folgenden wird gezeigt, wie ein UNIQUE
definiert wird Einschränkung für eine Spalte auf Spaltenebene:
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
Oder auf Tabellenebene:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
Im Folgenden wird veranschaulicht, wie ein UNIQUE
definiert wird Einschränkung für mehrere Spalten:
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
Einmal ein UNIQUE
Einschränkung definiert ist, gibt SQLite einen Fehler aus und bricht den Vorgang ab, wenn Sie versuchen, einen Wert einzufügen oder zu aktualisieren, der bereits in der Spalte vorhanden ist.
SQLite UNIQUE
Beispiele für Einschränkungen
Nehmen wir einige Beispiele für die Verwendung von UNIQUE
Einschränkung.
Definieren eines UNIQUE
Einschränkung für ein Spaltenbeispiel
Die folgende Anweisung erstellt eine neue Tabelle namens contacts
mit einem UNIQUE
Einschränkung für email
definiert Spalte:
CREATE TABLE contacts(
contact_id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Das folgende Beispiel fügt eine neue Zeile in die contacts
ein Tabelle:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Wenn Sie versuchen, einen neuen Kontakt mit derselben E-Mail-Adresse einzufügen, erhalten Sie eine Fehlermeldung:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Hier ist die Fehlermeldung:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Definieren eines UNIQUE
Einschränkung für mehrere Spalten Beispiel
Die folgende Anweisung erstellt die shapes
Tabelle mit einem UNIQUE
Einschränkung für background_color
definiert und foreground_color
Spalten:
CREATE TABLE shapes(
shape_id INTEGER PRIMARY KEY,
background_color TEXT,
foreground_color TEXT,
UNIQUE(background_color,foreground_color)
);
Code language: SQL (Structured Query Language) (sql)
Die folgende Anweisung fügt eine neue Zeile in die shapes
ein Tabelle:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Die folgende Anweisung funktioniert, da es in beiden background_color
keine Duplizierungsverletzung gibt und foreground_color
Spalten:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Die folgende Anweisung verursacht jedoch einen Fehler aufgrund der Duplikate in beiden background_color
und foreground_color
Spalten:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Hier ist der Fehler:
Error while executing SQL query on database 'chinook': `UNIQUE` constraint failed: shapes.background_color, shapes.foreground_color
Code language: SQL (Structured Query Language) (sql)
SQLite UNIQUE
Einschränkung und NULL
SQLite behandelt alle NULL-Werte unterschiedlich, daher eine Spalte mit einem UNIQUE
Einschränkung kann mehrere NULL-Werte haben.
Die folgende Anweisung erstellt eine neue Tabelle namens lists
dessen email
Spalte hat einen UNIQUE
Einschränkung:
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Die folgende Anweisung fügt mehrere NULL-Werte in die email
ein Spalte der lists
Tabelle:
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Lassen Sie uns Daten aus den lists
abfragen Tabelle:
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Hier ist die Ausgabe:
Wie Sie sehen können, obwohl die E-Mail-Spalte einen UNIQUE
hat Einschränkung, es kann mehrere NULL-Werte akzeptieren.
In diesem Tutorial haben Sie gelernt, wie Sie SQLite UNIQUE
verwenden einschränken, um sicherzustellen, dass alle Werte in einer Spalte oder einer Gruppe von Spalten eindeutig sind.