Heim  >  Artikel  >  Datenbank  >  MySQL-Fremdschlüssel entfernen und löschen

MySQL-Fremdschlüssel entfernen und löschen

WBOY
WBOYOriginal
2023-05-18 12:25:08771Durchsuche

MySQL-Fremdschlüssel und Löschungen

MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem, das weit verbreitet und sehr leistungsstark ist. In MySQL sind Fremdschlüssel ein sehr wichtiges Konzept und spielen eine wichtige Rolle beim Datenbankdesign und der Datenpflege. In diesem Artikel stellen wir Fremdschlüssel in MySQL vor und zeigen, wie man Fremdschlüssel zum Löschen von Daten in der Datenbank verwendet.

MySQL-Fremdschlüssel

Fremdschlüssel bezieht sich auf das Festlegen eines Schlüssels in einer Datenbanktabelle, der auf den Primärschlüssel einer anderen Tabelle verweist. Wenn eine Tabelle einen Fremdschlüssel hat, muss der Haupttabellendatensatz vorhanden sein, der jedem qualifizierten Datensatz in dieser Tabelle entspricht, andernfalls können verwandte Vorgänge nicht ausgeführt werden. Dieser Vorgang stellt die Integrität und Konsistenz der Daten zwischen Tabellen sicher.

Wir veranschaulichen das Konzept von Fremdschlüsseln anhand des folgenden Beispiels:

Tabelle Person erstellen:

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(20)
);

Tabellenkarte erstellen:

CREATE TABLE card (
    id INT PRIMARY KEY,
    person_id INT,
    card_no VARCHAR(20),
    FOREIGN KEY(person_id) REFERENCES person(id)
);

In der Tabellenkarte ist person_id ein Fremdschlüssel, der auf das ID-Feld in der Tabelle Person verweist. Der Zweck dieses Fremdschlüssels besteht darin, sicherzustellen, dass die person_id in jedem Kartendatensatz in der Personentabelle vorhanden ist, und so Konsistenz und Integrität sicherzustellen.

Verwenden Sie Fremdschlüssel zum Löschen

Wenn wir in der Datenbank löschen und eine Beziehung zwischen Tabellen besteht, müssen wir sicherstellen, dass der Löschvorgang die Integrität und Konsistenz der Datenbank nicht zerstört. In MySQL kann dies mithilfe von Fremdschlüsseln erreicht werden.

Wenn beim Ausführen eines Löschvorgangs der zu löschende Datensatz in einer Tabelle vorhanden ist, die einem Fremdschlüssel zugeordnet ist, müssen Sie zuerst den Datensatz in der zugehörigen Tabelle und dann den Datensatz in dieser Tabelle löschen. Dieser Vorgang kann mit ON DELETE CASCADE und ON DELETE SET NULL erreicht werden.

ON DELETE CASCADE funktioniert durch automatisches Klassifizieren und Löschen verwandter Datensätze in dieser Tabelle, wenn Datensätze in der zugehörigen Tabelle gelöscht werden. Beispiel:

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(20)
);

CREATE TABLE card (
    id INT PRIMARY KEY,
    person_id INT,
    card_no VARCHAR(20),
    FOREIGN KEY(person_id) REFERENCES person(id) ON DELETE CASCADE
);

INSERT INTO person(id, name) VALUES(1, 'Tom');

INSERT INTO card(id, person_id, card_no) VALUES(1, 1, '123456');

DELETE FROM person WHERE id = 1;

Im obigen Beispiel haben wir zuerst einen Datensatz in die Personentabelle und dann einen Datensatz in die Kartentabelle eingefügt. Dieser Datensatz verweist auf den Datensatz mit der ID 1 in der Personentabelle. Schließlich haben wir die DELETE-Anweisung verwendet, um den Datensatz mit der ID 1 in der Personentabelle zu löschen. Durch diesen Löschvorgang werden auch die zugehörigen Datensätze in der Kartentabelle automatisch gelöscht.

Bei der Operation ON DELETE SET NULL wird der zugehörige Datensatz in dieser Tabelle auf NULL gesetzt, wenn der Datensatz in der zugehörigen Tabelle gelöscht wird. Beispiel:

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(20)
);

CREATE TABLE card (
    id INT PRIMARY KEY,
    person_id INT,
    card_no VARCHAR(20),
    FOREIGN KEY(person_id) REFERENCES person(id) ON DELETE SET NULL
);

INSERT INTO person(id, name) VALUES(1, 'Tom');

INSERT INTO card(id, person_id, card_no) VALUES(1, 1, '123456');

DELETE FROM person WHERE id = 1;

Im obigen Beispiel haben wir zuerst einen Datensatz in die Personentabelle und dann einen Datensatz in die Kartentabelle eingefügt. Dieser Datensatz verweist auf den Datensatz mit der ID 1 in der Personentabelle. Schließlich haben wir die DELETE-Anweisung verwendet, um den Datensatz mit der ID 1 in der Personentabelle zu löschen. Durch diesen Löschvorgang wird die person_id im zugehörigen Datensatz in der Kartentabelle automatisch auf NULL gesetzt.

Zusammenfassung

MySQL-Fremdschlüssel sind ein sehr wichtiges Konzept und spielen eine wichtige Rolle beim Datenbankdesign und der Datenpflege. Durch die Verwendung von Fremdschlüsseln kann die Integrität und Konsistenz der Daten zwischen Tabellen sichergestellt werden. Wenn Sie einen Löschvorgang ausführen, können Sie ON DELETE CASCADE und ON DELETE SET NULL verwenden, um die Zuordnung zwischen Tabellen zu handhaben und so die Datenbankkonsistenz sicherzustellen.

Das obige ist der detaillierte Inhalt vonMySQL-Fremdschlüssel entfernen und löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Vorheriger Artikel:MySQL-AbfrageparameterNächster Artikel:MySQL-Abfrageparameter