SQL-Fremdschlüsseleinschränkungen können über das Schlüsselwort FOREIGN KEY angegeben werden, und die Erstellungsanweisung lautet „ALTER TABLE Tabellenname ADD CONSTRAINT Fremdschlüsselname FOREIGN KEY (Spaltenname) REFERENCES Haupttabellenname (Spaltenname);“.
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.
Tabellen-Fremdschlüsseleinschränkungen erstellen
Sie können Fremdschlüssel über das Schlüsselwort FOREIGN KEY in der ALTER TABLE-Anweisung angeben; die Voraussetzung für das Hinzufügen von Fremdschlüsseleinschränkungen ist: Die Daten in der Fremdschlüsselspalte in der Slave-Tabelle müssen mit der Haupttabelle konsistent sein. Die Daten in der Primärschlüsselspalte sind konsistent oder es sind keine Daten vorhanden.
Das spezifische Syntaxformat lautet wie folgt:
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
Beim Definieren eines Fremdschlüssels müssen Sie die folgenden Regeln einhalten:
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 Primärtabelle 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.
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. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.
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 stammen und die Fremdschlüsselspalten nicht leer sein dürfen .
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
Das obige ist der detaillierte Inhalt vonWas ist die SQL-Anweisung zum Erstellen einer Tabellen-Fremdschlüsseleinschränkung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!