Heim  >  Artikel  >  Datenbank  >  MySQL Advanced (1) Erklärung der Primär- und Fremdschlüssel

MySQL Advanced (1) Erklärung der Primär- und Fremdschlüssel

黄舟
黄舟Original
2017-02-09 15:10:151156Durchsuche

1. Was ist ein Fremdschlüssel:

Er identifiziert einen Datensatz eindeutig. Er kann nicht wiederholt werden und darf nicht leer sein. Er dient der Gewährleistung der Datenintegrität > Fremdschlüssel: Ja Der Primärschlüssel und der Fremdschlüssel einer anderen Tabelle können Duplikate oder Nullwerte haben und werden zum Herstellen von Beziehungen zu anderen Tabellen verwendet. Wenn wir also über Fremdschlüssel sprechen, müssen mindestens zwei Tabellen beteiligt sein. Zum Beispiel die folgenden zwei Tabellen:

MySQL Advanced (1) Erklärung der Primär- und FremdschlüsselOben gibt es zwei Tabellen: Abteilungstabelle (dept) und Mitarbeitertabelle (emp). Id = Dept_id, und Dept_id ist der Fremdschlüssel in der Mitarbeitertabelle: Da Mitarbeiter in der Mitarbeitertabelle wissen müssen, zu welcher Abteilung sie gehören, können sie die entsprechende Abteilung über den Fremdschlüssel Dept_id finden und dann verschiedene Feldinformationen in finden Abteilungstabelle, sodass die beiden zusammenhängen. Daher muss der Fremdschlüssel in der Slave-Tabelle erstellt werden, um die Verbindung zur Master-Tabelle herzustellen. Die Slave-Tabelle ist für die Aufrechterhaltung der Beziehung zwischen beiden verantwortlich.

2. Die Verwendung von Fremdschlüsseln muss die folgenden Bedingungen erfüllen: (Hier geht es um das Konzept von InnoDB)

1. Beide Tabellen müssen InnoDB-Tabellen sein und sie haben keine temporären Tabellen .

Hinweis: InnoDB ist die Engine der Datenbank. Es gibt zwei gängige MySQL-Engines: InnoDB und MyISAM. Letztere unterstützt keine Fremdschlüssel.

2. Die entsprechenden Spalten zum Herstellen einer Fremdschlüsselbeziehung müssen ähnliche interne InnoDB-Datentypen haben.

3. Die entsprechende Spalte zum Herstellen einer Fremdschlüsselbeziehung muss indiziert werden.

4. Wenn das CONSTRAINT-Symbol explizit angegeben wird, muss das Symbol in der Datenbank eindeutig sein. Wenn nicht explizit angegeben, wird InnoDB automatisch erstellt.

Interviewfrage: Welche Speicher-Engine verwendet Ihre Datenbank? Was ist der Unterschied?

Antwort: Übliche sind MyISAM und InnoDB.

MyISAM: Fremdschlüsseleinschränkungen werden nicht unterstützt. Transaktionen werden nicht unterstützt. Beim Importieren großer Datenmengen werden beim Einfügen von Daten Indizes erstellt. Um die Ausführungseffizienz zu verbessern, sollten Sie daher zuerst den Index deaktivieren und ihn dann nach dem vollständigen Import aktivieren.

InnoDB: unterstützt Fremdschlüsseleinschränkungen und Transaktionen. Die Indizes werden separat verarbeitet, ohne auf den Index zu verweisen.

CONSTRAINT-Symbol: Sie können dieser Fremdschlüsseleinschränkung einen Namen geben. Mit dem Namen ist es in Zukunft sehr einfach, sie zu finden. Wenn dieser Parameter nicht hinzugefügt wird, vergibt das System automatisch einen Namen.

FREMDSCHLÜSSEL: Verwenden Sie Feld 1 in der Tabelle als Feld des Fremdschlüssels.

REFERENZEN: Wird Feld 2 der Haupttabelle zugeordnet.

ON Die vier Parameter nach DELETE: stellen die Vereinbarung dar, die beim Löschen von Datensätzen in der Haupttabelle getroffen wurde.

RESTRICT (Einschränkung): Wenn die Master-Tabelle, die Sie löschen möchten, Datensätze enthält, die der darunter liegenden Slave-Tabelle entsprechen, wird diese Master-Tabelle nicht gelöscht.

CASCADE: Wenn die Datensätze in der Haupttabelle gelöscht werden, werden alle zugehörigen Datensätze in der Slave-Tabelle gelöscht.

SET NULL: Setzt den Fremdschlüssel auf Null.

KEINE MASSNAHME: Nichts tun.

Hinweis: Im Allgemeinen werden RESTRICT und CASCADE am häufigsten verwendet.

Schöne Texte und Bilder

MySQL Advanced (1) Erklärung der Primär- und Fremdschlüssel


Das Obige ist der Inhalt von MySQL Advanced (1) Primär- und Fremdschlüssel, Weitere Informationen zu verwandten Inhalten finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn