Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL

Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL

Vorwort

Ab MySQL-Version 3.23.44 unterstützen InnoDB-Engine-Typtabellen Fremdschlüsseleinschränkungen.

Voraussetzungen für die Verwendung von Fremdschlüsseln:

1. Beide Tabellen müssen InnoDB-Tabellen sein. MyISAM-Tabellen unterstützen derzeit keine Fremdschlüssel (es heißt, dass zukünftige Versionen dies möglicherweise unterstützen, aber zumindest derzeit nicht);

2. Die Fremdschlüsselspalte muss einen Index haben. MySQL 4.1.2 und spätere Versionen erstellen beim Erstellen eines Fremdschlüssels automatisch einen Index. Wenn Sie jedoch eine frühere Version verwenden, müssen Sie explizit einen Index erstellen.

3. Die Spalten der beiden Tabellen in der Fremdschlüsselbeziehung müssen ähnliche Datentypen aufweisen, d. h. Spalten, die ineinander konvertiert werden können, z. B. int und tinyint, aber nicht int und char.

Vorteile von Fremdschlüsseln: Sie können zwei Tabellen verknüpfen, die Datenkonsistenz sicherstellen und einige kaskadierende Operationen implementieren.

1. Erstellen von Fremdschlüsseln

Syntax 1: Nachfolgende Additionsmethode

Tabelle ändern, Tabellenname, Einschränkung hinzufügen, Einschränkungsname, Fremdschlüssel (das eingeschränkte Feld in der aktuellen Tabelle), Referenzen, Haupttabellenname (der einzuschränkende Feldname);
Tabelle „Student“ ändern, Einschränkung „fk_class_student“ hinzufügen, Fremdschlüssel (cls_id), Klasse (cls_id), bei Aktualisierung kaskadierend, beim Löschen keine Aktion;

Syntax 2: So erstellen Sie eine Tabelle

CREATE TABLE Student (
sid int Primärschlüssel,
cls_id int ungleich null,
sname varchar(10) nicht null,
Einschränkung fk_class_student Fremdschlüssel (cls_id) verweist auf Klasse (cls_id) bei Update-Kaskade bei Löschen keine Aktion
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

Ein zusätzlicher Punkt:

SHOW CREATE TABLE-Klasse

Sie können die Informationen zur Tabellenerstellung abfragen

Bildbeschreibung hier einfügen

CREATE TABLE `Klasse` (
 `cls_id` int NICHT NULL,
 `cls_name` varchar(15) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`cls_id`)
) ENGINE=InnoDB STANDARD-CHARSET=utf8

In der folgenden Demonstration verwenden wir die gerade erstellten Studententabellen und Klassentabellen.

Der Inhalt ist wie folgt

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

2. Über die vier Constraint-Methoden

Bei der Durchführung von Aktualisierungs-/Löschvorgängen an der übergeordneten Tabelle muss der Vorgangstyp der untergeordneten Tabelle

  1. CASCADE: Die Untertabelle löscht alle Daten, die Verweise auf den gelöschten Schlüsselwert enthalten.
  2. SET NULL Wenn die übergeordnete Tabelle gelöscht oder aktualisiert wird, setzt die untergeordnete Tabelle die Spalte, in der sich das Fremdschlüsselfeld des zugehörigen Datensatzes befindet, auf null
  3. RESTRICT Lehnt Löschanforderungen für Felder mit Beziehungen ab (dies ist die standardmäßige und sicherste Einstellung)
  4. NO ACTION ist ähnlich wie RESTRICT

Nehmen wir den Fremdschlüssel, den wir gerade als Beispiel festgelegt haben (bei Update-Kaskade, beim Löschen keine Aktion)

Wenn wir versuchen zu löschen

aus Klasse löschen, wobei cls_id=1

Die Ergebnisse sind wie folgt

Bildbeschreibung hier einfügen

Es ist ersichtlich, dass Löschvorgänge in der Haupttabelle nicht zulässig sind, da in der Fremdschlüsseleinschränkung die Bedingung „Beim Löschen keine Aktion“ vorhanden ist. Aber die Untertabelle kann

Löschen von Student, wobei cls_id=1

Bildbeschreibung hier einfügen

Wenn wir den zugehörigen Schlüssel der übergeordneten Tabelle aktualisieren, kann er aufgrund der Existenz einer Update-Kaskade normal aktualisiert werden.

UPDATE-Klassensatz cls_id=4, wobei cls_id=1

Bildbeschreibung hier einfügen

Und wenn die Haupttabelle aktualisiert wird, werden auch die Fremdschlüsselfelder in der untergeordneten Tabelle aktualisiert

Bildbeschreibung hier einfügen

3. So löschen Sie Fremdschlüssel

alter table subtable name drop foreign key foreign key constraint name alter table student drop foreign key fk_class_student

Nachdem wir den Fremdschlüssel gelöscht haben, wird der Vorgang der übergeordneten Tabelle normalisiert.

Bildbeschreibung hier einfügen

Zusammenfassen

Dies ist das Ende dieses Artikels über die Erstellung, Einschränkung und Löschung von Fremdschlüsseln in MySQL. Weitere Informationen zur Erstellung, Einschränkung und Löschung von Fremdschlüsseln in MySQL 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:
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls
  • MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung
  • Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen
  • MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial
  • Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints
  • Beispielanweisungen für Indizes und Einschränkungen in MySQL
  • Beispielerklärung von MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung der MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung des Beispiels für MySQL-Integritätsbeschränkungen
  • MySQL-Einschränkungen - Super detaillierte Erklärung

<<:  HTML-Tabellen-Markup-Tutorial (43): VALIGN-Attribut der Tabellenüberschrift

>>:  Schritte zum Erstellen eines Dateiservers mit Apache unter Linux

Artikel empfehlen

Anfänger lernen einige HTML-Tags (1)

Anfänger können HTML lernen, indem sie einige HTM...

Detaillierte Erklärung dieser Zeigerfunktion in JS

Die Pfeilfunktion ist eine neue Funktion in ES6. ...

Mit CSS3 können Sie eine schwebende Wolkenanimation erzielen

Wirkung der Operation html <Kopf> <meta ...

So installieren Sie Phabricator mit Docker

Ich verwende hier das Ubuntu 16.04-System. Instal...

So überprüfen Sie, wo die Metadatensperre in MySQL blockiert ist

So überprüfen Sie, wo die Metadatensperre in MySQ...

Detaillierte Schritte zur Installation von Nginx unter Linux

1. Nginx-Installationsschritte 1.1 Offizielle Web...

Detailliertes Installationstutorial für Mysql5.7.19 unter Centos7

1. Herunterladen Laden Sie mysql-5.7.19-linux-gli...

So installieren Sie MySQL 5.7 manuell auf CentOS 7.4

MySQL-Datenbanken werden häufig verwendet, insbes...

JS realisiert Video-Sperreffekt

Verwenden Sie um dies zu erreichen, die modulare ...