Die MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) ist ein spezielles Feld einer Tabelle, das häufig mit Primärschlüsseleinschränkungen verwendet wird. Bei zwei Tabellen mit einer zugehörigen Beziehung ist die Tabelle, in der sich der Primärschlüssel im zugehörigen Feld befindet, die Primärtabelle (übergeordnete Tabelle), und die Tabelle, in der sich der Fremdschlüssel befindet, ist die Sekundärtabelle (untergeordnete Tabelle). Fremdschlüssel werden verwendet, um eine Verbindung zwischen der Primärtabelle und der Sekundärtabelle herzustellen, die Daten in den beiden Tabellen zu verbinden und die Konsistenz und Integrität der Daten in den beiden Tabellen einzuschränken. Beispielsweise gibt es an einem Obststand nur vier Obstsorten: Äpfel, Pfirsiche, Pflaumen und Wassermelonen. Wenn Sie dann zum Obststand gehen, um Obst zu kaufen, können Sie nur Äpfel, Pfirsiche, Pflaumen und Wassermelonen auswählen. Andere Früchte können nicht gekauft werden. Wenn ein Datensatz aus der Haupttabelle gelöscht wird, muss auch der entsprechende Datensatz in der Tabelle entsprechend geändert werden. Eine Tabelle kann einen oder mehrere Fremdschlüssel haben, und Fremdschlüssel können Nullwerte sein. Wenn sie keine Nullwerte sind, muss der Wert jedes Fremdschlüssels einem Wert des Primärschlüssels in der Haupttabelle entsprechen. Beim Definieren von Fremdschlüsseln müssen Sie die folgenden Regeln beachten:
Festlegen von Fremdschlüsseleinschränkungen beim Erstellen einer TabelleIn der Anweisung CREATE TABLE wird der Fremdschlüssel durch das Schlüsselwort FOREIGN KEY angegeben. Das spezifische Syntaxformat lautet wie folgt:
Beispiel 1 Um die Fremdschlüsselbeziehung zwischen Tabellen darzustellen, erstellt dieses Beispiel eine Abteilungstabelle tb_dept1 in der Datenbank test_db. Die Tabellenstruktur ist in der folgenden Tabelle dargestellt.
Die SQL-Anweisung zum Erstellen von tb_dept1 und das laufende Ergebnis lauten wie folgt. mysql> TABELLE ERSTELLEN tb_dept1 -> ( -> id INT(11) PRIMÄRSCHLÜSSEL, -> Name VARCHAR(22) NOT NULL, -> Standort VARCHAR(50) -> ); Abfrage OK, 0 Zeilen betroffen (0,37 Sek.) Erstellen Sie eine Datentabelle tb_emp6 und erstellen Sie eine Fremdschlüsseleinschränkung für Tabelle tb_emp6. Lassen Sie den Schlüssel deptId mit dem Primärschlüssel id der Tabelle tb_dept1 als Fremdschlüssel verknüpfen. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt. mysql> TABELLE ERSTELLEN tb_emp6 -> ( -> id INT(11) PRIMÄRSCHLÜSSEL, -> Name VARCHAR(25), -> deptId INT(11), -> Gehalt FLOAT, -> EINSCHRÄNKUNG fk_emp_dept1 -> FREMDER SCHLÜSSEL(deptId) REFERENZEN tb_dept1(id) -> ); Abfrage OK, 0 Zeilen betroffen (0,37 Sek.) mysql> DESC tb_emp6; +--------+----------+------+-----+---------+---------+----------+ | Feld | Typ | Null | Schlüssel | Standard | Extra | +--------+----------+------+-----+---------+---------+----------+ | Ich würde | int(11) | NEIN | PRI | NULL | | | Name | varchar(25) | JA | | NULL | | | deptId | int(11) | JA | MUL | NULL | | | Gehalt | Float | JA | | NULL | | +--------+----------+------+-----+---------+---------+----------+ 4 Reihen im Satz (1,33 Sek.) Nachdem die obige Anweisung erfolgreich ausgeführt wurde, wird der Tabelle tb_emp6 eine Fremdschlüsseleinschränkung mit dem Namen fk_emp_dept1 hinzugefügt. Der Fremdschlüsselname ist deptId, was von der Primärschlüssel-ID der Tabelle tb_dept1 abhängt.
Hinzufügen von Fremdschlüsseleinschränkungen beim Ändern einer TabelleBeim Ändern einer Tabelle können auch Fremdschlüsseleinschränkungen hinzugefügt werden. Voraussetzung für das Hinzufügen einer Fremdschlüsseleinschränkung ist jedoch, dass die Daten in der Fremdschlüsselspalte der Slave-Tabelle mit den Daten in der Primärschlüsselspalte der Master-Tabelle übereinstimmen müssen oder dass keine Daten vorhanden sind. Die Syntax zum Hinzufügen einer Fremdschlüsseleinschränkung beim Ändern einer Datentabelle lautet wie folgt:
Beispiel 2 Ändern Sie die Datentabelle tb_emp2, legen Sie das Feld deptId als Fremdschlüssel fest und verknüpfen Sie es mit der Primärschlüssel-ID der Datentabelle tb_dept1. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt. mysql> ALTER TABLE tb_emp2 -> EINSCHRÄNKUNG fk_tb_dept1 HINZUFÜGEN -> Fremdschlüssel (Abteilungs-ID) -> REFERENZEN tb_dept1(id); Abfrage OK, 0 Zeilen betroffen (1,38 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 mysql> ANZEIGEN CREATE TABLE tb_emp2\G *************************** 1. Reihe *************************** Tabelle: tb_emp2 Tabelle erstellen: CREATE TABLE `tb_emp2` ( `id` int(11) NICHT NULL, `name` varchar(30) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `Gehalt` float DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `fk_tb_dept1` (`deptId`), EINSCHRÄNKUNG `fk_tb_dept1` FREMDER SCHLÜSSEL (`deptId`) REFERENZEN `tb_dept1` (`id`) ) ENGINE=InnoDB STANDARD-CHARSET=gb2312 1 Zeile im Satz (0,12 Sek.) Hinweis: Wenn Sie einer bereits erstellten Datentabelle Fremdschlüsseleinschränkungen hinzufügen, stellen Sie sicher, dass die Werte der Spalten, denen die Fremdschlüsseleinschränkungen hinzugefügt werden, alle aus den Primärschlüsselspalten stammen und dass die Fremdschlüsselspalten nicht leer sein können. Löschen einer Fremdschlüsseleinschränkung Wenn eine Fremdschlüsseleinschränkung in einer Tabelle nicht mehr benötigt wird, muss sie aus der Tabelle entfernt werden. Sobald der Fremdschlüssel gelöscht ist, wird die Verknüpfung zwischen der Primärtabelle und der Sekundärtabelle entfernt.
Beispiel 3 Löschen Sie die Fremdschlüsseleinschränkung fk_tb_dept1 in der Datentabelle tb_emp2. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt. mysql> ALTER TABLE tb_emp2 -> Fremdschlüssel löschen fk_tb_dept1; Abfrage OK, 0 Zeilen betroffen (0,19 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 mysql> ANZEIGEN CREATE TABLE tb_emp2\G *************************** 1. Reihe *************************** Tabelle: tb_emp2 Tabelle erstellen: CREATE TABLE `tb_emp2` ( `id` int(11) NICHT NULL, `name` varchar(30) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `Gehalt` float DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `fk_tb_dept1` (`deptId`) ) ENGINE=InnoDB STANDARD-CHARSET=gb2312 1 Zeile im Satz (0,00 Sek.) Es ist ersichtlich, dass FOREIGN KEY in tb_emp2 nicht mehr vorhanden ist und die ursprüngliche Fremdschlüsseleinschränkung mit dem Namen fk_emp_dept erfolgreich gelöscht wurde. Dies ist das Ende dieses Artikels über die Fallstudie zu MySQL-Fremdschlüsseleinschränkungen (FOREIGN KEY). Weitere relevante Inhalte zu MySQL-Fremdschlüsseleinschränkungen (FOREIGN KEY) finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: So zeigen Sie kleine Symbole in der Browsertitelleiste einer HTML-Webseite an
>>: Analysieren Sie das Problem beim Herunterladen der Oracle 11g-Image-Konfiguration in Docker
Bei der Verwendung von lepus3.7 zur Überwachung d...
FIFO-Kommunikation (First In First Out) FIFO-Name...
Machen Sie einen leeren Bereich für Taobao: Wenn ...
Inhaltsverzeichnis einführen Beispiel Zusammenfas...
Wie installiere ich PHP7 unter Linux? 1. Installi...
Vorbereitende Schritte Habe einen Cloud-Server, m...
Mysql mehrere unabhängige Tabellen Abfragedaten u...
Beim Exportieren von Daten in Operationen ist das...
Inhaltsverzeichnis 1. Wie entsteht Cross-Domain? ...
Inhaltsverzeichnis Überblick 1. Bereichsfehler 2....
In diesem Artikel wird der spezifische Code für R...
Dieser Artikel beschreibt die Linux-Dateiverwaltu...
Ich war in einer Besprechung, als ein Kollege anr...
Als ich gestern ein Projekt schrieb, musste ich d...
Die Implementierung des Erweiterns und Reduzieren...