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

Acht gängige SQL-Verwendungsbeispiele in MySQL

Vorwort MySQL setzte auch 2016 seinen starken Wac...

Sechs wichtige Selektoren in CSS (merken Sie sie sich in drei Sekunden)

Von: https://blog.csdn.net/qq_44761243/article/de...

Implementierungs- und Nutzungsszenarien der JS-Anti-Shake-Drosselungsfunktion

Inhaltsverzeichnis 1. Was ist die Anti-Shake-Funk...

Detaillierte Erklärung, wie zwei Node.js-Prozesse kommunizieren

Inhaltsverzeichnis Vorwort Kommunikation zwischen...

Kapselungsmethode der Vue-Breadcrumbs-Komponente

Vue kapselt die Breadcrumb-Komponente zu Ihrer In...

JavaScript implementiert kreisförmigen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Ja...

Installieren Sie mysql5.7.10 manuell unter Ubuntu

Dieses Tutorial beschreibt den Prozess der manuel...

Analysieren des MySQL-Binärprotokolls

Inhaltsverzeichnis 1. Einführung in Binlog 2. Bin...

MySQL-Index-Pushdown in fünf Minuten verstehen

Inhaltsverzeichnis Was ist Index-Pushdown? Das Pr...