Die Beziehungen zwischen den Tabellen sind das Schlüsselmerkmal von relationalen Datenbanken, die durch Fremd- und Primärschlüssel dargestellt werden. In diesem Artikel werden wir die ausländischen Schlüssel und ihre Arbeit in SQLite erklären.
Was sind ausländische Schlüssel?
Fremdschlüssel sind die Werte in einer Tabelle, die den Primärschlüssel einer anderen Tabelle anzeigen. Um dies zu verstehen, betrachten wir zwei Tabellen, Tabelle A und Tabelle B:
Tabelle a | ||
Studenten -ID (primary_key) | Name des Studenten | Lehrer -ID (Forign_key) |
---|---|---|
1 | John | 123 |
2 | Paul | 453 |
Tabelle b | ||
Lehrer -ID (primär_key) | Lehrernamen | Probanden erlaubt |
---|---|---|
123 | Alex | Mathematik, Physik |
453 | Juana | Chemie, Botanik |
Nun in Tabelle a, Studenten ID ist der Hauptschlüssel dieser Tabelle und Lehrerausweis ist der fremde Schlüssel, aber in Tabelle B, Lehrerausweis ist der Hauptschlüssel. Die Lehrer -ID, die ein fremder Schlüssel ist, stellt eine Beziehung zwischen Tabelle A zu Tabelle B auf.
So überprüfen Sie den Status des Fremdschlüssels in SQLite
SQLite unterstützt die Funktion eines Fremdschlüssels nach der Veröffentlichung seiner Version 3.6.19, um zu überprüfen, ob die installierte Version von SQLite den Fremdschlüssel unterstützt oder nicht, führen Sie den folgenden Befehl in der SQLite -Umgebung aus:
Pragma fremd_keys;Die Ausgabe kann entweder "0" oder "1" sein und wenn sie keine Ausgabe anzeigt, bedeutet dies, dass die Fremdkasten nicht unterstützt werden.
Ausgang | Ergebnis |
---|---|
0 | Die ausländischen Schlüssel sind deaktiviert |
1 | Die fremden Schlüssel sind aktiviert |
So aktivieren/deaktivieren Sie fremde Schlüssel in SQLite
Um die ausländischen Schlüssel in SQLite zu aktivieren, führen Sie Folgendes aus:
Pragma fremd_keys = on;Wir können die Fremdschlüssel deaktivieren, indem wir nur im obigen Befehl abgeben, anstatt auf den obigen Befehl. Um zu bestätigen, dass ausländische Schlüssel aktiviert sind, führen Sie den Befehl pragma aus:
Pragma fremd_keys;Die Ausgabe zeigt 1, was bedeutet, dass die Fremdschlüssel aktiviert werden.
Was ist die allgemeine Syntax der Verwendung von Fremdschlüssel
Die allgemeine Syntax der Verwendung eines Fremdschlüssels zum Erstellen einer Tabelle lautet:
TABLE TABLE_NAME CREATEDie Erklärung davon ist:
Wie funktioniert ein Fremdschlüssel in SQLite?
Um die Arbeit von ausländischen Schlüssel zu verstehen, sollten wir ein Beispiel für einen Kurierdienst in Betracht ziehen und zwei Tabellen erstellen, Customer_Details und Shipment_Details, die die folgenden Daten haben:
Kundendetails | ||
Kundennummer | Kundenname | Sendung_ID |
---|---|---|
1 | John | 5612 |
2 | Paul | 3467 |
Versanddetails | |||
Sendung_ID | Status | Aus (Stadt) | Zu (Stadt) |
---|---|---|---|
5612 | Geliefert | London | Manchester |
3467 | In Bearbeitung | Bristol | Cardiff |
In der Tabelle, Customer_Details. Und in der Tabelle, Shipment_Details, Sipment_ID ist ein Primärschlüssel.
So fügen Sie einen fremden Schlüssel in SQLite hinzu
Um eine Tabelle zu erstellen, führen Customer_Details den folgenden Befehl aus:
TABLE Customer_Details erstellen (Customer_id Integer Primärschlüssel, Customer_Name Text NOT NULL, SHARPS_ID Ganzzahl nicht NULL, Fremd Key (Shipment_ID) Referenzen Shipment_Details (Shipment_ID));Im obigen Befehl haben wir den Fremdschlüssel und den Primärschlüssel erwähnt und finden Sie auch auf die Tabelle, in der der Fremdschlüssel verfügbar sein wird. Nach der Erstellung der Tabelle customer_details erstellen wir die Tabelle Shipment_Details als:
TABLE Sendment_details erstellen (Sendung Integer Primärschlüssel, Status Text, City_From Text, City_to Text);Verwenden Sie nun den folgenden Befehl, um Werte in die Tabelle customer_details einzufügen:
In Customer_Details (Customer_ID, Customer_Name, Shipment_ID) einfügen (1, 'John', 5612), (2, 'Paul', 3467);Wir können sehen, dass es den Fehler von “generiert hat“Fehler: Fremdschlüsselbeschränkung ist fehlgeschlagenDieser Fehler wird generiert, weil wir uns auf den Versand der Tabelle beziehen, Shipment_details, die noch keinen Wert hat. Um diesen Fehler zu entfernen, müssen wir zuerst die Daten in Shipment_details bearbeiten, die wir uns auf den Fremdschlüssel beziehen. Führen Sie den folgenden Befehl aus, um Daten in die Tabelle Shipment_Details einzufügen:
Einfügen in Sendment_Details (Sendung, Status, City_From, City_to) Werte (5612, 'geliefert', 'London', 'Manchester'), (3467, 'in_Process', 'Bristol', 'Cardiff');Um die Tabelle anzuzeigen, leiten Sie den Befehl aus: Sendment_details: Ausführen des Befehls:
Wählen Sie * aus Shipment_Details;Führen Sie nun den Befehl erneut aus, um Werte in Customer_Details mit der Anweisung einzulegen:
In Customer_Details (Customer_ID, Customer_Name, Shipment_ID) einfügen (1, 'John', 5612), (2, 'Paul', 3467);Der Befehl wurde erfolgreich ausgeführt, ohne den Fehler "Fremdschlüsselbeschränkungen fehlgeschlagen" zu generieren. Führen Sie den Befehl aus, um die Tabelle anzuzeigen:
Wählen Sie * aus customer_details;Was sind die Aktionen für ausländische Schlüsselbeschränkungen?
Es gibt einige Aktionen, die Sie auf dem übergeordneten Schlüssel ausführen können, wobei der Kinderschlüssel reagiert. Die allgemeine Syntax ist:
Fremd Key (fremd_key_column)Eine Erklärung für diese Syntax ist:
SQLite unterstützt die in der Tabelle erklärten Aktionen:
Aktion | Beschreibung |
---|---|
Null | Wenn die übergeordnete Taste gelöscht wird |
Setzen Sie Standard | Es funktioniert genauso wie die NULL -Aktion, aber anstatt Nullwerte in die Spalte der untergeordneten Schlüssel zu setzen, legt es einen Standardwert fest |
Keine Aktion | Wenn Änderungen im übergeordneten Schlüssel der übergeordneten Datenbank vorgenommen werden, werden im untergeordneten Schlüssel keine Änderungen stattgefunden |
Beschränken | Der Benutzer kann die Werte nicht von einem übergeordneten Schlüssel hinzufügen oder löschen |
Kaskade | Es geht auf die Änderungen weiter, die in einer übergeordneten Tabelle an die Kindertisch vorgenommen werden |
Abschluss
Relationale Datenbanken sind beliebt, um die Beziehungen zwischen den Tabellen bereitzustellen, SQLite, eine der relationalen Datenbanken, unterstützt diese Funktion ebenfalls. Die Beziehungen werden mit Hilfe von Schlüssel hergestellt, die als Fremd- und Primärschlüssel bezeichnet werden. In SQLite sollte der Fremdschlüssel aktiviert werden, um ihn zu verwenden. In diesem Artikel haben wir gelernt, was die ausländischen Schlüssel in SQLite sind und wie sie funktionieren. Wir haben auch die Einschränkungen der von SQLite unterstützten ausländischen Schlüssel erörtert.