So legen Sie MySQL-Fremdschlüssel für Anfänger fest

So legen Sie MySQL-Fremdschlüssel für Anfänger fest

Die Rolle von Fremdschlüsseln

Die Aufrechterhaltung der Datenkonsistenz und -integrität sowie die Kontrolle der in der Fremdschlüsseltabelle gespeicherten Daten sind der Hauptzweck. Um zwei Tabellen zu verknüpfen, kann der Fremdschlüssel nur auf die Werte der Spalten in der Fremdtabelle verweisen!

Zum Beispiel:

ab zwei Tische

Tabelle A enthält Kundennummer und Kundenname

Tabelle b speichert die Bestellungen jedes Kunden.

Mit Fremdschlüsseln

Sie können Kunde x erst dann aus Tabelle a löschen, wenn Sie sicher sind, dass in Tabelle b keine Bestellungen für Kunde x vorhanden sind.

Voraussetzungen für die Festlegung eines Fremdschlüssels: Die Spalten dieser Tabelle müssen vom gleichen Typ sein wie der Fremdschlüssel (der Fremdschlüssel muss der Primärschlüssel der Fremdtabelle sein).

Geben Sie das Primärschlüsselwort an: Fremdschlüssel (Spaltenname)

Referenz-Fremdschlüsselwörter: verweist auf <Fremdschlüsseltabellenname> (Fremdschlüsselspaltenname)

Einschränkungen für Ereignisauslöser: Beim Löschen und Aktualisieren können Parameter kaskadiert werden (Fremdschlüsseländerungen verfolgen), eingeschränkt werden (Fremdschlüsseländerungen in der Tabelle einschränken), Null gesetzt werden (Nullwert setzen), Standard gesetzt werden (Standardwert setzen), [Standard] keine Aktion

Zum Beispiel:

outTable Tabelle Primärschlüssel ID Typ int

Erstellen Sie eine Tabelle mit einem Fremdschlüssel:

  Tabelle temp erstellen(
  Ich würde int,
  Name char(20),
  Fremdschlüssel (ID) verweist auf outTable(ID) bei Löschkaskade und Aktualisierungskaskade);

Hinweis: Legen Sie die ID-Spalte als Fremdschlüssel fest, um auf die ID-Spalte der Fremdtabelle outTable zu verweisen. Wenn der Wert des Fremdschlüssels gelöscht wird, wird die entsprechende Spalte in dieser Tabelle herausgefiltert. Wenn der Wert des Fremdschlüssels geändert wird, wird der entsprechende Spaltenwert in dieser Tabelle geändert.

MySQL-Fremdschlüssel-Einstellungsmethode

MySQL-Methode zum Festlegen von Fremdschlüsseln / Beim Erstellen eines Index können Sie die entsprechende Operation angeben, die beim Löschen/Aktualisieren der übergeordneten Tabelle an der untergeordneten Tabelle ausgeführt werden soll.

Beinhaltet: Einschränken, Kaskadieren, Auf Null und keine Aktion setzen, Standard festlegen.

  • einschränken, keine Aktion:
    Überprüfen Sie sofort Fremdschlüsseleinschränkungen. Wenn in der untergeordneten Tabelle übereinstimmende Datensätze vorhanden sind, können die zugehörigen Datensätze der übergeordneten Tabelle nicht gelöscht oder aktualisiert werden.
  • Kaskade:
    Wenn die übergeordnete Tabelle gelöscht/aktualisiert wird, werden die entsprechenden Datensätze in der untergeordneten Tabelle entsprechend gelöscht/aktualisiert.
  • auf Null setzen:
    Wenn die übergeordnete Tabelle gelöscht/aktualisiert wird, wird das entsprechende Feld der untergeordneten Tabelle auf null gesetzt. Beachten Sie zu diesem Zeitpunkt, dass der Fremdschlüssel der untergeordneten Tabelle nicht auf ungleich null gesetzt werden kann.
  • Standard festlegen:
    Wenn die übergeordnete Tabelle gelöscht/aktualisiert wird, setzt die untergeordnete Tabelle den Fremdschlüssel auf einen Standardwert, aber InnoDB kann ihn nicht erkennen. Tatsächlich ist InnoDB die Standardspeicher-Engine nach MySQL 5.5, daher wird nicht empfohlen, diese Fremdschlüsselmethode festzulegen. Wenn Ihre Umgebung MySQL vor 5.5 verwendet und die Standardspeicher-Engine Myisam ist, können Sie dies in Betracht ziehen.

Gehen Sie bei der Auswahl von „Set Null“, „SetDefault“ und „Cascade“ vorsichtig vor, da falsche Vorgänge zu Datenverlust führen können.

Wenn die obige Beschreibung nicht klar genug ist, sehen Sie sich bitte das folgende Beispiel an.

Die Ländertabelle ist die übergeordnete Tabelle, country_id ist der Primärschlüssel, city ist die untergeordnete Tabelle und der Fremdschlüssel ist country_id, was dem Primärschlüssel country_id der Ländertabelle entspricht.

Tabelle Land erstellen(
	country_id smallint unsigned nicht null auto_increment,
	Land varchar(50) nicht null,
	last_update Zeitstempel nicht null Standard current_timestamp beim Update current_timestamp,
	Primärschlüssel (Länder-ID)
)engine=INNODB Standard-Zeichensatz=utf8;

CREATE TABLE `Stadt` (
  `city_id` smallint(5) unsigned NICHT NULL auto_increment,
  `Stadt` varchar(50) NICHT NULL,
  `country_id` smallint(5) unsigned NICHT NULL,
  `last_update` Zeitstempel NICHT NULL Standard CURRENT_TIMESTAMP beim Update CURRENT_TIMESTAMP,
  PRIMÄRSCHLÜSSEL (`city_id`),
  SCHLÜSSEL `idx_fk_country_id` (`country_id`),
  CONSTRAINT `fk_city_country` FOREIGN KEY (`country_id`) REFERENZEN `country` (`country_id`) beim Löschen einschränken ON UPDATE CASCADE
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

Beispielsweise wird für die beiden oben neu erstellten Tabellen der Fremdschlüssel der Untertabelle wie folgt angegeben: „on delete restrict ON UPDATE CASCADE mode“. Wenn die Haupttabelle Datensätze löscht und die Untertabelle entsprechende Datensätze hat, ist das Löschen nicht zulässig. Wenn die Haupttabelle Datensätze aktualisiert und die Untertabelle übereinstimmende Datensätze hat, werden die entsprechenden Datensätze in der Untertabelle entsprechend aktualisiert.

z.B:

in Länderwerte einfügen (1, „wq“, „jetzt“);
wählen Sie * aus Land;
in Stadtwerte einfügen (222, „Tom“, 1, jetzt ());
wählen Sie * aus der Stadt;

Löschen aus dem Land, in dem country_id=1 ist;
Land aktualisieren, country_id=100 festlegen, wobei country_id=1;
Wählen Sie * aus dem Land, in dem Land = "wq" ist.
Wählen Sie * aus der Stadt, wo Stadt = "Tom" ist;

Zusammenfassen

Dies ist das Ende dieses Artikels zum Festlegen von MySQL-Fremdschlüsseln. Weitere Informationen zum Festlegen von MySQL-Fremdschlüsseln finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel für eine Methode zum Festlegen von MySQL-Fremdschlüsseln
  • MySQL-Anweisungen zum Erstellen von Primärschlüsseln, Fremdschlüsseln und zusammengesetzten Primärschlüsseln
  • Detaillierte Erklärung der MySQL-Fremdschlüsselverwendung
  • MySQL-Fremdschlüsselverwendung und detaillierte Erklärung
  • MySQL erstellt Fremdschlüssel
  • Ein kurzes Tutorial zum Verständnis von Primärschlüsseln und Fremdschlüsseln in MySQL
  • Zusammenfassung der Probleme beim Löschen von MySQL-Fremdschlüsseln
  • Detaillierte Erklärung der Fremdschlüsseleinschränkungen in MySQL

<<:  Detaillierte Erklärung des Unterschieds zwischen var, let und const in JavaScript

>>:  Eine kurze Analyse der Verwendung des HTML-Webpack-Plugins

Artikel empfehlen

Lernen Sie schnell die MySQL-Grundlagen

Inhaltsverzeichnis SQL verstehen SELECT verstehen...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...

Detaillierte Erklärung des Docker-Befehls zum Sichern des Linux-Systems

Tar-Backup-System sudo tar cvpzf backup.tgz --exc...

Informationen zur Installation von Homebrew auf dem Mac

Vor kurzem hat Xiao Ming einen neuen Mac gekauft ...

Warum wird UTF-8 in MySQL nicht empfohlen?

Ich bin kürzlich auf einen Fehler gestoßen, als i...

mySql SQL-Abfrageoperation für statistische Mengen

Ich werde nicht viel Unsinn erzählen, schauen wir...

Eine kurze Zusammenfassung meiner Erfahrungen beim Schreiben von HTML-Seiten

Es sind drei oder vier Monate vergangen, seit ich ...

Lösung zum Hinzufügen einer iptables-Firewall-Richtlinie zum MySQL-Dienst

Wenn Ihre MySQL-Datenbank auf einem CentOS7-Syste...

Navicat kann keine Funktionslösungsfreigabe erstellen

Als ich zum ersten Mal eine MySQL-FUNKTION schrie...

Tutorial zur Verwendung von $attrs und $listeners in Vue

Inhaltsverzeichnis einführen Beispiel Zusammenfas...

So erreichen Sie ein zentriertes Layout im CSS-Layout

1. Legen Sie den übergeordneten Container auf ein...