So verwenden Sie MySQL Fremd Schlüsselbeschränkungen

So verwenden Sie MySQL Fremd Schlüsselbeschränkungen
Die fremde Schlüsselbeschränkung wird verwendet, um eine Beziehung zwischen zwei Tabellen in der MySQL -Datenbank herzustellen. Es ist ein sehr wichtiges Merkmal von MySQL, verschiedene Arten von Einschränkungen für die zugehörigen Tabellen festzulegen. So definieren Sie alle Fremdschlüsselbeschränkungen für jede Tabelle, die Sie den Primärschlüssel einer anderen Tabelle verwenden müssen. Der Primärschlüssel ist ein eindeutiger Schlüssel für eine Tabelle, um die bestimmte Zeile in der Tabelle zu identifizieren und wenn dieser Primärschlüssel in eine andere Tabelle verwendet wird, um eins zu eins oder eins zu vielen oder vielen zu vielen Beziehung wird als Fremdschlüssel bezeichnet. Die Funktionen von Fremdschlüssel und wie diese Schlüssel in MySQL -Tabellen verwendet werden können, werden in diesem Artikel angezeigt.

Merkmale von ausländischen Schlüsselbeschränkungen:

Einige wichtige Merkmale von Fremdschlüsseleinschränkungen werden unten erläutert.

  • Der Datentyp des Fremdschlüssels, der in der untergeordneten Tabelle verwendet wird.
  • Jede Indexspalte oder mehrere Spalten können nur als Fremdschlüssel für die InnoDB -Tabelle bezeichnet werden.
  • Referenzen Berechtigungen oder mindestens eine der Berechtigungen der Auswahl, Einfügen, Aktualisierung und Löschen von Anweisungen ist erforderlich, um einen Fremdschlüssel zu erstellen.
  • Ein fremder Schlüssel kann auf zwei Arten erstellt werden. Eine, indem die Anweisung erstellen und eine andere mit der Alteranweisung verwendet wird.

Voraussetzung:

Bevor Sie eine Fremdschlüsselbeschränkung erstellen, müssen Sie eine Datenbank- und übergeordnete Tabelle mit dem Primärschlüssel erstellen. Angenommen, der Datenbankname ist ''Bibliothek"Und es enthält zwei übergeordnete Tische benannt"Bücher' Und 'Kreditnehmer''. Machen Sie eine Verbindung mit MySQL Server mit dem Mysql Client und führen Sie die folgenden SQL -Anweisungen aus, um die Datenbank und die Tabellen zu erstellen.

Datenbankbibliothek erstellen;
Bibliothek verwenden;
Tischbücher erstellen (
ID int nicht null auto_increment,
Titel varchar (50) nicht null,
Autor varchar (50) nicht null,
Verlag Varchar (50) nicht null,
Primärschlüssel (ID)
) Motor = InnoDB;
Erstellen Sie Tabellenkreditnehmer (
ID varchar (50) nicht null,
Nennen Sie Varchar (50) NICHT NULL,
Adress varchar (50) nicht null,
E -Mail Varchar (50) NICHT NULL,
Primärschlüssel (ID)
) Motor = InnoDB;

Definieren Sie fremde Schlüsselbeschränkungen mithilfe der Erstellung der Erstellung

Erstellen Sie eine Tabelle mit dem Namen 'book_borrow_info'Mit fremden Schlüsselbeschränkungen durch Ausführung der folgenden Erklärung. Hier das book_id Feld ist a Unbekannter Schlüssel Für diese Tabelle muss und jeder Wert dieses Feldes in der vorhanden sein Ausweis Bereich Bücher Tisch. Bücher ist die übergeordnete Tabelle und book_borrow_info ist der Kindertisch. Zwei Einschränkungen werden auch hier mit dem Fremdschlüssel festgelegt. Diese sind Kaskade löschen Und Aktualisieren Sie die Kaskade. Das heißt, wenn ein Primärschlüssel aus der übergeordneten Tabelle entfernen oder aktualisiert wird, werden die entsprechenden Aufzeichnungen, die sich auf die Tabelle des Fremdschlüssels beziehen, entfernt oder der Fremdschlüssel wird aktualisiert.

Erstellen Sie Table book_borrow_info (
bire_id varchar (50),
book_id int,
liehen_date Datum nicht null,
return_date Datum nicht null,
Status varchar (15) nicht null,
Index par_ind (book_id),
Primärschlüssel (birld_id, borrow_date),
Fremdschlüssel (book_id) referenziert Bücher (ID)
Bei Löschen der Kaskade
Auf Update Cascade
) Motor = InnoDB;

Führen Sie nun die folgenden SQL -Anweisungen aus, um einige Datensätze in beide Tabellen einzufügen. In der ersten Anweisung Einfügen wird vier Datensätze in die Bücher Tisch. Die vier Werte von Ausweis Bereich Bücher Die Tabelle beträgt 1, 2, 3 und 4 für das Auto-Increment-Attribut. In der zweiten Anweisung Einfügungsanweisung wird vier Datensätze eingefügt in book_borrow_info basierend auf Ausweis Wert von Bücher Tisch.

In Bücherwerte einfügen
(Null, "um einen Spottdrossel zu töten", "Harper Lee", "Grand Central Publishing"),
(NULL, 'Hundert Jahre Einsamkeit', 'Garcia Marquez', 'Lutfi Ozkok'),
(NULL, 'eine Passage nach Indien', 'Forster, e.M.',' BBC Hulton Bildbibliothek '),
(Null, "Invisible Man", "Ralph Ellison", "Encyclopædia Britannica, Inc.');
Fügen Sie in book_borrow_info -Werte ein
('123490', 1, '2020-02-15', '2020-02-25', 'zurückgegeben')),
('157643', 2, '2020-03-31', '2020-03-10', 'Ausstehende'),
('174562', 4, '2020-04-04', '2020-04-24', 'ausgeliehen')),
('146788', 3, '2020-04-10', '2020-01-20', 'ausgeliehen');

Wenn Sie versuchen, einen Wert in das Feld Fremdschlüssel der untergeordneten Tabelle einzufügen, die im Primärschlüsselfeld der übergeordneten Tabelle nicht vorhanden ist, generiert MySQL einen Fehler. Die folgende SQL -Anweisung generiert einen Fehler, da die übergeordnete Tabelle, Bücher Enthält keinen ID -Wert 10.

Fügen Sie in book_borrow_info -Werte ein
('195684', 10, '2020-04-15', '2020-04-30', 'zurückgegeben');

Nach der Ausführung der folgenden Löschanweisung, wenn der vierte Datensatz aus dem entfernt wird Bücher Tabelle dann die zugehörigen Datensätze aus dem book_borrow_info Die Tabelle wird automatisch für die Fremdschlüsselbeschränkungen entfernt.

Aus Büchern löschen, wobei ID = 4;
Aus Büchern auswählen;
Wählen Sie * aus book_borrow_info;

Definieren Sie die Einschränkung der Fremdschlüssel mithilfe der Änderungserklärung

Fügen Sie zunächst einige Datensätze in ein Kreditnehmer Tabelle und diese Tabelle werden in der nächsten als übergeordnete Tabelle definiert ÄNDERN Stellungnahme.

Einfügen in die Werte von Kreditnehmern ein
('123490', 'Patrick Wood', '34 West Street Lancaster La14 9zh ',' [email protected] ')),
('157643', 'Ezra Martin', '10 The Grove Birmingham B98 1EU ',' [email protected] ')),
('174562', 'John Innes Archie', '55 Main Road Liverpool L2 3od ', [email protected] ')),
('146788', 'Frederick Hanson', '85 Highfield Road Shrewsbury Sy46 3Me ',' Hanson@Google Mail.com ');

Leiten Sie Folgendes aus ÄNDERN Aussage, um eine weitere fremde Schlüsselbeschränkung für festzulegen book_borrow_info Tabelle, um die Beziehung mit Kreditnehmer Tisch. Hier, liehen_id ist definiert als ein fremder Schlüssel für book_borrow_info Tisch.

Alter table book_borrow_info Hinzufügen von Einschränkungen fk_borlower
Ausländische Key (borrow_id) Referenzen Kreditnehmer (ID) auf Löschen von Kaskade auf dem Update -Einschränkung;

Fügen Sie nun einen Datensatz in ein book_borrow_info mit gültig liehen_id Wert, der existiert in Ausweis Bereich Kreditnehmer Tisch. 157643 Der Wert gibt es in der Tabelle der Kreditnehmer, und die folgende Einfügungsanweisung wird erfolgreich ausgeführt.

Fügen Sie in book_borrow_info -Werte ein
('157643', 1, '2020-03-10', '2020-03-20', 'zurückgegeben');

In der folgenden Einfügeanweisung wird eine Fehlermeldung wegen des ID -Werts generiert 195680 existiert in Kreditnehmern Tisch nicht.

Fügen Sie in book_borrow_info -Werte ein
('195680', 1, '2020-04-15', '2020-04-30', 'zurückgegeben');

Abschluss:

Das ordnungsgemäße Definieren von ausländischen Schlüsselbeschränkungen ist eine sehr wichtige Aufgabe, um eine relationale Datenbank zu erstellen und Daten unter den Tabellen angemessen zu verwalten. Die Verwendung von Fremdschlüsseleinschränkungen zu kennen, ist für Datenbankdesigner sehr wichtig. Ich hoffe.