Heim >Datenbank >MySQL-Tutorial >So erstellen und fragen Sie Fremdschlüssel in MySQL ab
1. Was ist ein Fremdschlüssel?
Ein Fremdschlüssel ist eine oder mehrere Spalten in einer Tabelle, die verwendet wird Um anzugeben, dass die Werte in dieser Spalte oder Spalten mit Daten in einer anderen Tabelle oder einem Primärschlüssel in einer anderen Tabelle übereinstimmen müssen. Diese übereinstimmende Tabelle wird als referenzierte Tabelle bezeichnet. Ein Fremdschlüssel ist ein Mechanismus in einer relationalen Datenbank, der zum Verbinden von zwei oder mehr Tabellen verwendet wird.
Der Zweck von Fremdschlüsseln besteht darin, die Integrität und Konsistenz von Daten sicherzustellen. Wenn wir einer Tabelle eine Datenzeile hinzufügen und die Daten mit einigen Daten in einer anderen Tabelle übereinstimmen müssen und die Übereinstimmungsbeziehung über einen Fremdschlüssel hergestellt wird, überprüft MySQL den Fremdschlüssel in den neu hinzugefügten Daten Überprüfen Sie, ob die Daten in der referenzierten Tabelle vorhanden sind. Wenn sie nicht vorhanden sind, wird das Einfügen der Daten in die Tabelle verweigert. Es gibt viele Möglichkeiten, Fremdschlüssel in MySQL zu erstellen. Im Folgenden sind zwei gängige Methoden aufgeführt.
1. Verwenden Sie die ALTER TABLE-Anweisung Das Syntaxformat zum Hinzufügen von Fremdschlüsseln über die ALTER TABLE-Anweisung ist wie folgt:
ALTER TABLE-Tabelle Name ADD CONSTRAINT Foreign Key Name FOREIGN KEY (Spaltenname) REFERENCES Der Tabellenname (Spaltenname) einer anderen Tabelle;
Unter diesen ist der Fremdschlüsselname ein Name, der dem Fremdschlüssel gegeben wird sollte eindeutig sein, und der Spaltenname, auf den verwiesen wird, ist der Spaltenname der aktuellen Tabelle, und die Angabe und der Spaltenname der anderen Tabelle sind der Name der referenzierten Tabelle bzw. der Spaltenname der referenzierten Tabelle.
Zum Beispiel haben wir eine Mitarbeitertabelle (Mitarbeiter) und eine Abteilungstabelle (Abteilungen). Wir können die folgende SQL-Anweisung verwenden, um diesen Fremdschlüssel zu erstellen.
ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);
Diese Anweisung bedeutet, einen Fremdschlüssel mit dem Namen dept_fk zur Mitarbeitertabelle hinzuzufügen (dept_fk verweist auf die Spalte dept_id der Mitarbeitertabelle, die auf die Spalte dept_id der Abteilungstabelle verweist).
2. Fremdschlüssel beim Erstellen einer Tabelle definieren
Das Definieren von Fremdschlüsseln beim Erstellen einer Tabelle ist ebenfalls eine gängige Methode. Das Syntaxformat lautet wie folgt:
CREATE TABLE 表名 ( 列名 数据类型, 外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名) );
Zum Beispiel, um eine Mitarbeitertabelle (Mitarbeiter) und eine Abteilungstabelle (Abteilungen) zu erstellen und die Spalte dept_id als Fremdschlüssel der zu verknüpfenden Mitarbeitertabelle zu verwenden Um die Spalte „dept_id“ der Tabelle „departments“ zu verwenden, können Sie die folgende SQL-Anweisung verwenden.
CREATE TABLE employees ( id INT NOT NULL, name VARCHAR(50) NOT NULL, dept_id INT, PRIMARY KEY (id), FOREIGN KEY (dept_id) REFERENCES departments (dept_id) )3. So fragen Sie Fremdschlüssel ab
Sobald Fremdschlüssel in MySQL eingerichtet sind, können Sie sie mithilfe von MySQL-Abfrageanweisungen abfragen. Das Syntaxformat zum Abfragen von Fremdschlüsseln lautet wie folgt:
SELECT * FROM 表名 WHERE 列名 IS NULL;
Diese Anweisung gibt Daten mit leeren Spaltennamen in der Tabelle zurück. Wenn diese Spalte als Fremdschlüssel definiert ist, sind die Daten in das Abfrageergebnis Die Tabelle mit dem Fremdschlüssel stimmt nicht mit den Daten der Zeile überein. Die Ergebnisse dieser Abfrage helfen uns sehr dabei, festzustellen, welche Datensätze nicht korrekt zugeordnet wurden und manuell aufgelöst werden müssen. Zum Beispiel haben wir eine Abteilungstabelle und ihre Spalte dept_id ist als Fremdschlüssel definiert. Wenn wir die Datensätze abfragen möchten, für die es in der Abteilungstabelle keine passenden Datensätze gibt, können wir die verwenden Folgende SQL-Anweisung: # 🎜🎜#
SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);Diese Anweisung bedeutet, die dept_id-Daten in der Abteilungstabelle abzufragen, die nicht in der Mitarbeitertabelle enthalten sind.
Das obige ist der detaillierte Inhalt vonSo erstellen und fragen Sie Fremdschlüssel in MySQL ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!