SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite UNIQUE-Beschränkung

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.