Primärschlüssel und Fremdschlüssel eingeben SQLite mit Beispielen
SQLite Einschränkungen
Spalteneinschränkungen erzwingen Einschränkungen und Regeln für die in eine Spalte eingefügten Werte, um die eingefügten Daten zu validieren. Spalteneinschränkungen werden beim Erstellen einer Tabelle in der Spaltendefinition definiert.
SQLite Primärschlüssel
Alle Werte in einer Primärschlüsselspalte sollten eindeutig und nicht null sein
Der Primärschlüssel kann nur auf eine Spalte oder auf eine Kombination von Spalten angewendet werden. Im letzteren Fall sollte die Kombination der Spaltenwerte für alle Tabellenzeilen eindeutig sein.
Syntax:
Es gibt viele verschiedene Möglichkeiten, einen Primärschlüssel für eine Tabelle zu definieren, wie zum Beispiel:
- In der Spaltendefinition selbst:
ColumnName INTEGER NOT NULL PRIMARY KEY;
- Als separate Definition:
PRIMARY KEY(ColumnName);
- So erstellen Sie eine Spaltenkombination als Primärschlüssel:
PRIMARY KEY(ColumnName1, ColumnName2);
Keine Null-Einschränkung
SQLite Die Nicht-Null-Einschränkung verhindert, dass eine Spalte einen Nullwert hat:
ColumnName INTEGER NOT NULL;
DEFAULT-Einschränkung
SQLite Standardeinschränkung: Wenn Sie keinen Wert in eine Spalte einfügen, wird stattdessen der Standardwert eingefügt.
Zum Beispiel:
ColumnName INTEGER DEFAULT 0;
Wenn Sie eine Einfügeanweisung schreiben und für diese Spalte keinen Wert angegeben haben, hat die Spalte den Wert 0.
SQLite Einzigartige Beschränkung
SQLite Durch die eindeutige Einschränkung werden doppelte Werte in allen Werten der Spalte verhindert.
Beispielsweise:
EmployeeId INTEGER NOT NULL UNIQUE;
Dadurch wird das durchgesetzt "Angestellten ID" Da der Wert eindeutig sein muss, sind keine doppelten Werte zulässig. Beachten Sie, dass dies für die Werte der Spalte gilt "Angestellten ID" nur.
SQLite CHECK-Einschränkung
SQLite Überprüfen Sie eine Bedingung, um einen eingefügten Wert zu überprüfen. Wenn der Wert nicht mit der Bedingung übereinstimmt, wird er nicht eingefügt.
Quantity INTEGER NOT NULL CHECK(Quantity > 10);
Sie können keinen Wert unter 10 eingeben "Menge" Spalte.
SQLite Unbekannter Schlüssel
Die SQLite Fremdschlüssel ist eine Einschränkung, die das Vorhandensein eines in einer Tabelle vorhandenen Werts gegenüber einer anderen Tabelle überprüft, die eine Beziehung zur ersten Tabelle hat, in der der Fremdschlüssel definiert ist.
Beim Arbeiten mit mehreren Tabellen gibt es zwei Tabellen, die miteinander in Beziehung stehen und eine gemeinsame Spalte haben. Und wenn Sie sicherstellen möchten, dass der in eine von ihnen eingefügte Wert in der Spalte der anderen Tabelle vorhanden sein muss, sollten Sie eine „Fremdschlüsseleinschränkung“ für die gemeinsame Spalte verwenden.
Wenn Sie in diesem Fall versuchen, einen Wert in diese Spalte einzufügen, stellt der Fremdschlüssel sicher, dass der eingefügte Wert in der Tabellenspalte vorhanden ist.
Beachten Sie, dass Fremdschlüsseleinschränkungen in nicht standardmäßig aktiviert sind SQLite, müssen Sie sie zuerst aktivieren, indem Sie den folgenden Befehl ausführen:
PRAGMA foreign_keys = ON;
Fremdschlüsseleinschränkungen wurden eingeführt SQLite ab Version 3.6.19.
Beispiel von SQLite Unbekannter Schlüssel
Angenommen, wir haben zwei Tabellen; Studierende und Abteilungen.
Die Tabelle „Studenten“ enthält eine Liste der Studenten und die Tabelle „Abteilungen“ enthält eine Liste der Abteilungen. Jeder Student gehört einer Abteilung an; Das heißt, jeder Student hat eine Abteilungs-ID-Spalte.
Nun werden wir sehen, wie die Fremdschlüsseleinschränkung hilfreich sein kann, um sicherzustellen, dass der Wert der Abteilungs-ID in der Studententabelle in der Abteilungstabelle vorhanden sein muss.
Wenn wir also eine Fremdschlüsseleinschränkung für die Abteilungs-ID in der Tabelle „Studenten“ erstellt haben, muss jede eingefügte Abteilungs-ID in der Tabelle „Abteilungen“ vorhanden sein.
CREATE TABLE [Departments] ( [DepartmentId] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [DepartmentName] NVARCHAR(50) NULL ); CREATE TABLE [Students] ( [StudentId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [StudentName] NVARCHAR(50) NULL, [DepartmentId] INTEGER NOT NULL, [DateOfBirth] DATE NULL, FOREIGN KEY(DepartmentId) REFERENCES Departments(DepartmentId) );
Um zu überprüfen, wie Fremdschlüsseleinschränkungen das Einfügen undefinierter Elemente oder Werte in eine Tabelle verhindern können, die eine Beziehung zu einer anderen Tabelle hat, sehen wir uns das folgende Beispiel an.
In diesem Beispiel weist die Tabelle „Departments“ eine Fremdschlüsseleinschränkung für die Tabelle „Studenten“ auf, sodass jeder in die Tabelle „Studenten“ eingefügte Wert „departmentId“ in der Tabelle „departments“ vorhanden sein muss. Wenn Sie versuchen, einen Wert „departmentId“ einzufügen, der nicht in der Tabelle „departments“ vorhanden ist, würde die Fremdschlüsseleinschränkung Sie daran hindern.
Fügen wir zwei Abteilungen ein "ES" und „Kunst“ in die Abteilungstabelle wie folgt:
INSERT INTO Departments VALUES(1, 'IT'); INSERT INTO Departments VALUES(2, 'Arts');
Die beiden Anweisungen sollen zwei Abteilungen in die Abteilungstabelle einfügen. Sie können sicherstellen, dass die beiden Werte eingefügt wurden, indem Sie die Abfrage ausführen „* AUS Abteilungen AUSWÄHLEN“ danach:
Versuchen Sie dann, einen neuen Studenten mit einer Abteilungs-ID einzufügen, die in der Abteilungstabelle nicht vorhanden ist:
INSERT INTO Students(StudentName,DepartmentId) VALUES('John', 5);
Die Zeile wird nicht eingefügt und Sie erhalten die folgende Fehlermeldung: Die FOREIGN KEY-Einschränkung ist fehlgeschlagen.