Sie können die Anweisung „ALTER TABLE“ und das Schlüsselwort „FOREIGN KEY“ verwenden, um Fremdschlüssel in MySQL hinzuzufügen. Die Syntax lautet „ALTER TABLE Tabellenname ADD CONSTRAINT Fremdschlüsselname FOREIGN KEY (Spaltenname) REFERENCES Haupttabellenname (Spalte). Name);".
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) ist ein spezielles Feld der Tabelle, das häufig zusammen 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, die sekundäre Tabelle (untergeordnete Tabelle).
Fremdschlüssel werden verwendet, um die Beziehung zwischen der Master-Tabelle und der Slave-Tabelle herzustellen, eine Verbindung für die Daten in den beiden Tabellen herzustellen und die Konsistenz und Integrität der Daten in den beiden Tabellen einzuschränken.
Bei der Definition von Fremdschlüsseln müssen Sie folgende Regeln beachten:
Die Haupttabelle muss bereits in der Datenbank vorhanden sein oder die Tabelle sein, die gerade erstellt wird. Im letzteren Fall handelt es sich bei der Master-Tabelle und der Slave-Tabelle um dieselbe Tabelle. Eine solche Tabelle wird als selbstreferenzielle Tabelle bezeichnet, und diese Struktur wird als selbstreferenzielle Integrität bezeichnet.
Muss einen Primärschlüssel für die Haupttabelle definieren.
Primärschlüssel dürfen keine Nullwerte enthalten, in Fremdschlüsseln sind jedoch Nullwerte zulässig. Das heißt, solange jeder Nicht-Null-Wert des Fremdschlüssels im angegebenen Primärschlüssel vorkommt, ist der Inhalt des Fremdschlüssels korrekt.
Geben Sie den Spaltennamen oder eine Kombination von Spaltennamen nach dem Tabellennamen der Haupttabelle an. Diese Spalte oder Spaltenkombination muss der Primärschlüssel oder Kandidatenschlüssel der Haupttabelle sein.
Die Anzahl der Spalten im Fremdschlüssel muss mit der Anzahl der Spalten im Primärschlüssel der Haupttabelle übereinstimmen.
Der Datentyp der Spalte im Fremdschlüssel muss mit dem Datentyp der entsprechenden Spalte im Primärschlüssel der Haupttabelle übereinstimmen.
MySQL fügt der Tabelle Fremdschlüsseleinschränkungen hinzu
Fremdschlüsseleinschränkungen können beim Ändern der Tabelle hinzugefügt werden, aber die Voraussetzung für das Hinzufügen von Fremdschlüsseleinschränkungen ist: die Daten in der Fremdschlüsselspalte in der Sekundärtabelle muss mit dem Primärschlüssel in der Haupttabelle übereinstimmen. Die Daten in der Spalte sind konsistent oder es sind keine Daten vorhanden.
Das Syntaxformat zum Hinzufügen von Fremdschlüsseleinschränkungen beim Ändern der Datentabelle lautet wie folgt:
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
Beispiel
Ä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
mysql> ALTER TABLE tb_emp2 -> ADD CONSTRAINT fk_tb_dept1 -> FOREIGN KEY(deptId) -> REFERENCES tb_dept1(id); Query OK, 0 rows affected (1.38 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE tb_emp2\G *************************** 1. row *************************** Table: tb_emp2 Create Table: CREATE TABLE `tb_emp2` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `salary` float DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_tb_dept1` (`deptId`), CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 1 row in set (0.12 sec)
Hinweis: Stellen Sie beim Hinzufügen von Fremdschlüsseleinschränkungen zur erstellten Datentabelle sicher, dass die Werte der Spalten, zu denen die Fremdschlüsseleinschränkungen hinzugefügt werden, alle aus den Primärschlüsselspalten und dem Fremdschlüssel stammen Schlüsselspalten dürfen nicht leer sein.
【Verwandte Empfehlungen: MySQL-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonSo fügen Sie Fremdschlüsseleinschränkungen in MySQL hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!