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üsselnSyntax 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 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 2. Über die vier Constraint-MethodenBei der Durchführung von Aktualisierungs-/Löschvorgängen an der übergeordneten Tabelle muss der Vorgangstyp der untergeordneten Tabelle
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 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 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 Und wenn die Haupttabelle aktualisiert wird, werden auch die Fremdschlüsselfelder in der untergeordneten Tabelle aktualisiert 3. So löschen Sie Fremdschlüsselalter 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. ZusammenfassenDies 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:
|
<<: HTML-Tabellen-Markup-Tutorial (43): VALIGN-Attribut der Tabellenüberschrift
>>: Schritte zum Erstellen eines Dateiservers mit Apache unter Linux
Prämisse In komplexen Szenarien müssen große Date...
1. Im Allgemeinen ist MariaDB in CentOS standardm...
Inhaltsverzeichnis 1.kvm-Bereitstellung 1.1 KVM-I...
Wir wissen, dass MySQL ein persistenter Speicher ...
Vorwort: rm unter Linux-Systemen ist irreversibel...
Nehmen wir als Beispiel das Übersetzungsprogramm....
Es gibt zwei Metaattribute: Name und http-equiv. D...
Schluss mit Unsinn, Postleitzahl HTML-Teil <di...
1. Log4j zur Protokollsegmentierung 1) Bereiten S...
Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...
Inhaltsverzeichnis 1. Einleitung 2. Einführung in...
1. Hintergrund 1. Das Frontend verwendet vue + vu...
Heute ist bei mir ein Problem aufgetreten, als ic...
Erstellen des Projekts Führen Sie die Befehlszeil...
Inhaltsverzeichnis Anwendungsszenarien Lösung 1. ...