Spezielle Methode zum Hinzufügen von Fremdschlüsseleinschränkungen in MySQL

Spezielle Methode zum Hinzufügen von Fremdschlüsseleinschränkungen in MySQL

Die Betriebsumgebung dieses Tutorials: Windows 7-System, MySQL 8-Version, Dell G3-Computer.

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.

Beim Definieren von Fremdschlüsseln müssen Sie die folgenden Regeln beachten:

  • Die Primärtabelle muss bereits in der Datenbank vorhanden sein oder die Tabelle sein, die gerade erstellt wird. Im letzteren Fall sind die Master-Tabelle und die Slave-Tabelle dieselbe Tabelle. Eine solche Tabelle wird als selbstreferenzielle Tabelle bezeichnet, und diese Struktur wird als selbstreferenzielle Integrität bezeichnet.
  • Für die Primärtabelle muss ein Primärschlüssel definiert werden.
  • Primärschlüssel dürfen keine Nullwerte enthalten, in Fremdschlüsseln sind jedoch Nullwerte zulässig. Das heißt, solange jeder von Null verschiedene Wert des Fremdschlüssels im angegebenen Primärschlüssel vorkommt, ist der Inhalt dieses Fremdschlüssels korrekt.
  • Geben Sie nach dem Tabellennamen der Haupttabelle einen Spaltennamen oder eine Kombination aus Spaltennamen 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 Primärtabelle übereinstimmen.
  • Der Datentyp der Fremdschlüsselspalte muss mit dem Datentyp der entsprechenden Spalte im Primärschlüssel der Primärtabelle übereinstimmen.

Hinzufügen von Fremdschlüsseleinschränkungen zu einer Tabelle in MySQL

Beim Ändern einer Tabelle können Fremdschlüsseleinschränkungen hinzugefügt werden. Voraussetzung für das Hinzufügen von Fremdschlüsseleinschränkungen 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:

ALTER TABLE <Tabellenname> ADD CONSTRAINT <Fremdschlüsselname>
FOREIGN KEY(<Spaltenname>) REFERENCES <primärer Tabellenname> (<Spaltenname>);

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
-> 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.

Inhaltserweiterung:

Wann werden Fremdschlüsseleinschränkungen verwendet?

Ehrlich gesagt müssen Sie bei der Verwendung von InnoDB-Tabellen in MySQL nicht unbedingt Fremdschlüsseleinschränkungen verwenden. Um jedoch die Funktion von Fremdschlüsseleinschränkungen in einigen Fällen zu veranschaulichen, verwenden wir den Code des oben genannten Beispiels, um es ausführlich zu erklären. Es enthält zwei MyISAM-Tabellen, eine zum Speichern von Blog-Posts und eine zum Speichern von Kommentaren.

Beim Definieren des Datenbankschemas stellen wir eine Eins-zu-viele-Beziehung zwischen diesen beiden Tabellen her, indem wir in der Kommentartabelle einen Fremdschlüssel erstellen, um jede Zeile (d. h. jeden Kommentar) einem bestimmten Blogbeitrag zuzuordnen. Hier ist der grundlegende SQL-Code zum Erstellen einer MyISAM-Beispieltabelle:

Tabelle löschen, wenn `test`.`blogs` vorhanden ist;

Tabelle `test`.`blogs` erstellen (

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`Titel` TEXT,

`Inhalt` TEXT,

`Autor` VARCHAR(45) DEFAULT NULL,

PRIROSE-SCHLÜSSEL (`id`)

)ENGINE=MyISAM STANDARD-CHARSET=utf8;


DROP TABLE, WENN `test`.`comments` EXISTIERT;

CREATE TABLE `test`.`comments` (

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id` INT(10) UNSIGNED DEFAULT NULL,

`Kommentar` TEXT,

`Autor` VARCHAR(45) DEFAULT NULL,

PRIROSE-SCHLÜSSEL (`id`)

)ENGINE=MyISAM STANDARD-CHARSET=utf8;

Dies ist das Ende dieses Artikels über die spezifische Methode zum Hinzufügen von Fremdschlüsseleinschränkungen zu MySQL. Weitere Informationen zum Hinzufügen von Fremdschlüsseleinschränkungen zu MySQL 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 erstellen und löschen Sie Fremdschlüsseleinschränkungen in MySQL
  • MySQL-Datenbankbeschränkungen und Prinzipien des Datentabellenentwurfs
  • Detaillierte Erklärung, ob die MySQL-Datenbank Fremdschlüsseleinschränkungen verwenden soll
  • MySQL lernen: Fünf Hauptbeschränkungen von Datenbanktabellen im Detail für Anfänger erklärt
  • Detaillierte Erläuterung der sechs gängigen Einschränkungstypen in MySQL
  • Eine kurze Diskussion über den Unterschied zwischen MySQL-Primärschlüsseleinschränkung und eindeutiger Einschränkung
  • MySQL-Einschränkungen - Super detaillierte Erklärung
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls
  • So legen Sie Einschränkungen für Tabellen in einer MySQL-Datenbank fest

<<:  Einführung und Tipps zur Verwendung der interaktiven Visualisierungs-JS-Bibliothek gojs

>>:  Reine clientseitige und rein serverseitige Implementierungslösungen für die Konvertierung von HTML in PDF

Artikel empfehlen

JavaScript-Datenvisualisierung: ECharts-Kartenerstellung

Inhaltsverzeichnis Überblick Vorsichtsmaßnahmen 1...

XHTML-Einführungstutorial: Anwendung von Tabellen-Tags

<br />Tabelle ist ein umständliches Tag in X...

Lösung für das Problem ungültiger Breiteneinstellungen für Label und Span

Standardmäßig ist die Einstellung der Breite für B...

Einige Fehler, die JavaScript-Anfänger häufig machen

Inhaltsverzeichnis Vorwort Verwechslung von „unde...

Implementierung der MySQL-Datentypkonvertierung

1. Problem Es gibt eine Tabelle wie unten gezeigt...

Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

Eine Geschichte über die Datenbankleistung Währen...

Implementierungsschritte zum Erstellen eines FastDFS-Dateiservers unter Linux

Inhaltsverzeichnis 1. Softwarepaket 2. Installier...

So umgehen Sie unbekannte Feldnamen in MySQL

Vorwort Dieser Artikel stellt die fünfte Frage vo...

Beispiel für die horizontale Anordnung von li-Tags in HTML

Die meisten Navigationsleisten sind horizontal an...

display:grid in CSS3, eine Einführung in das Rasterlayout

1. Rasterlayout (Raster): Es unterteilt die Webse...

Perfekte Lösung für das Zeitzonenproblem des Docker Alpine-Image

Als ich kürzlich Docker zum Bereitstellen einer J...