Heim Datenbank MySQL-Tutorial So legen Sie Fremdschlüssel in MySQL fest

So legen Sie Fremdschlüssel in MySQL fest

Jun 03, 2023 am 11:20 AM
mysql

Was ist ein Fremdschlüssel?

In einer Datenbank werden die Spalten einer Tabelle als Felder oder Attribute der Tabelle bezeichnet. In der Datenbank einer E-Commerce-Website kann beispielsweise die Mobiltelefonnummer des Benutzers in einer Tabelle mit dem Namen „Benutzer“ (Benutzer) und die Bestellung des Benutzers in einer anderen Tabelle mit dem Namen „Bestellung“ (Bestellmitte) gespeichert werden. Zwischen diesen beiden Tabellen besteht eine Eins-zu-Viele-Beziehung, das heißt, ein Benutzer kann mehrere Bestellungen haben und eine Bestellung gehört nur einem Benutzer.

Fremdschlüssel ist ein relationaler Datenbankbegriff, der eine Einschränkung darstellt, die zwei Tabellen verbindet. Fremdschlüsseleinschränkungen stellen sicher, dass beim Verweisen auf Daten in einer anderen Tabelle eine Instanz mit einem Wert erstellt werden muss, der mit dem Wert in der anderen Tabelle übereinstimmt.

Der Vorteil von Fremdschlüsseln besteht darin, dass sie die Integrität der Beziehungen zwischen Datentabellen sicherstellen. Das bedeutet, dass bei einer Fremdschlüsseleinschränkung zwischen zwei Tabellen beim Löschen oder Aktualisieren eines Datensatzes in der Primärtabelle alle davon abhängigen Fremdschlüssel automatisch gelöscht oder aktualisiert werden.

Wie lege ich Fremdschlüssel fest?

Um einen Fremdschlüssel einzurichten, müssen Sie sicherstellen, dass die von Ihnen verwendete MySQL-Engine ihn unterstützt. Derzeit unterstützt MySQL MyISAM-, InnoDB- und NDB-Engines, von denen InnoDB die am weitesten verbreitete Engine und die einzige MySQL-Engine ist, die Fremdschlüssel unterstützt.

Wenn Sie Fremdschlüsseleinschränkungen verwenden möchten, stellen Sie bitte sicher, dass Ihre Tabelle die InnoDB-Engine verwendet. Sie können den folgenden Befehl ausführen, um den Engine-Typ der Tabelle zu überprüfen:

SHOW TABLE STATUS FROM database_name WHERE Name='table_name';
Nach dem Login kopieren

Wobei database_name der Datenbankname und table_name die Engine ist Geben Sie den Tabellennamen ein, den Sie überprüfen möchten. database_name是数据库名称,table_name是您要查看引擎类型的表名。

如果您的表使用的是不支持外键约束的引擎,则需要将其更改为InnoDB引擎,执行以下命令:

ALTER TABLE table_name ENGINE=InnoDB;
Nach dem Login kopieren

接下来,您需要创建一个表并添加一个外键约束。以下是相应的代码示例:

CREATE TABLE order (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    date_added DATETIME,
    FOREIGN KEY (user_id) REFERENCES user(user_id)
);
Nach dem Login kopieren

在此示例中,我们创建了一个“订单”(order)表,其中包括订单ID(order_id)、用户ID(user_id)和日期(date_added)字段。然后,我们为“订单”表添加了一个外键约束,以确保在添加新订单之前先存在用户ID。

在这个约束表达式中,user_id是当前表中的字段名称,user是所依赖的表的名称,user_id是所依赖表中的字段名称。此外,FOREIGN KEY关键字用于定义外键约束。

在MySQL中,还可以将外键约束定义为CASCADESET NULLRESTRICT。以下是这些选项的说明:

  • CASCADE:在指定父项时,将同时删除或更新子项。

  • SET NULL:在指定父项时将删除或更新子项的值为Null。

  • RESTRICT:在指定父项时阻止删除或更新子项。

以下是完整的代码示例,其中包括CASCADESET NULLRESTRICT选择:

-- 创建父表
CREATE TABLE user (
    user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL
);

-- 创建子表,并定义外键约束
CREATE TABLE order (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    date_added DATETIME,
    FOREIGN KEY (user_id) REFERENCES user(user_id)
        ON DELETE CASCADE
        ON UPDATE SET NULL
);
Nach dem Login kopieren

在此示例中,我们为“订单”表添加了两个选项。ON DELETE CASCADE选项表示在删除用户记录时,也将删除所有与该用户关联的订单记录。ON UPDATE SET NULL

Wenn Ihre Tabelle eine Engine verwendet, die keine Fremdschlüsseleinschränkungen unterstützt, müssen Sie sie auf die InnoDB-Engine ändern und den folgenden Befehl ausführen:

-- 查找所有订单
SELECT * FROM order;

-- 查找用户John的所有订单
SELECT * FROM order WHERE user_id=(SELECT user_id FROM user WHERE username='John');
Nach dem Login kopieren

Als nächstes Sie brauchen Erstellen Sie eine Tabelle und fügen Sie eine Fremdschlüsseleinschränkung hinzu. Das Folgende ist das entsprechende Codebeispiel:

-- 修改订单,将John的所有订单修改为Jane的订单
UPDATE order SET user_id=(SELECT user_id FROM user WHERE username='Jane') WHERE user_id=(SELECT user_id FROM user WHERE username='John');
Nach dem Login kopieren
In diesem Beispiel erstellen wir eine „Bestell“-Tabelle, die das Feld „Bestell-ID“ (order_id), „Benutzer-ID“ (user_id) und „Datum“ (date_added) enthält. Anschließend haben wir der Tabelle „Bestellungen“ eine Fremdschlüsseleinschränkung hinzugefügt, um sicherzustellen, dass die Benutzer-ID vorhanden ist, bevor eine neue Bestellung hinzugefügt wird.

In diesem Einschränkungsausdruck ist user_id der Feldname in der aktuellen Tabelle, user der Name der abhängigen Tabelle, user_id ist der Name des Feldes in der abhängigen Tabelle. Darüber hinaus wird das Schlüsselwort FOREIGN KEY verwendet, um Fremdschlüsseleinschränkungen zu definieren.

In MySQL können Fremdschlüsseleinschränkungen auch als CASCADE, SET NULL oder RESTRICT definiert werden. Hier finden Sie Beschreibungen dieser Optionen:

  • CASCADE: Wenn ein übergeordnetes Element angegeben wird, werden auch die untergeordneten Elemente gelöscht oder aktualisiert. #🎜🎜#
  • #🎜🎜#SET NULL: Bei der Angabe des übergeordneten Elements wird der Wert des untergeordneten Elements gelöscht oder auf Null aktualisiert. #🎜🎜#
  • #🎜🎜#RESTRICT: Verhindert das Löschen oder Aktualisieren von untergeordneten Elementen, wenn ein übergeordnetes Element angegeben wird. #🎜🎜#
#🎜🎜#Das Folgende ist ein vollständiges Codebeispiel, einschließlich CASCADE, SET NULL und RESTRICT Code Code>Auswählen: #🎜🎜#rrreee#🎜🎜# In diesem Beispiel haben wir der Tabelle „Bestellungen“ zwei Optionen hinzugefügt. Die Option <code>ON DELETE CASCADE gibt an, dass beim Löschen eines Benutzerdatensatzes auch alle mit dem Benutzer verknüpften Bestelldatensätze gelöscht werden. Die Option ON UPDATE SET NULL gibt an, dass beim Aktualisieren eines Benutzerdatensatzes die Benutzer-ID im Bestelldatensatz auf einen Nullwert gesetzt wird. #🎜🎜##🎜🎜#Wie verwende ich Fremdschlüssel? #🎜🎜##🎜🎜#Bei der Datenbankprogrammierung können Sie einige grundlegende Befehle verwenden, um Tabellen abzufragen, die Fremdschlüssel enthalten. Hier ist ein Beispielcode: #🎜🎜#rrreee#🎜🎜#In beiden Beispielen fragen wir die Tabelle „Orders“ ab, die Fremdschlüsseleinschränkungen enthält. Im zweiten Beispiel haben wir auch eine verschachtelte Abfrage verwendet, um Bestelldatensätze für einen bestimmten Benutzer zu exportieren. #🎜🎜##🎜🎜#Wenn Sie einen Änderungsvorgang durchführen, stellen Sie sicher, dass die Änderung keine Fremdschlüsseleinschränkungen verletzt. Wenn der geänderte Wert die Fremdschlüsseleinschränkungen nicht erfüllt, tritt ein Fehler auf. Ändern Sie in diesem Fall die entsprechenden Daten, um die Fremdschlüsseleinschränkungen zu erfüllen. Hier ist ein Beispiel: #🎜🎜#rrreee#🎜🎜# Wir werden alle Bestellungen des Benutzers „John“ als Referenz in Bestellungen des Benutzers „Jane“ ändern. Stellen Sie vorher sicher, dass der Benutzer „Jane“ bereits vorhanden ist. #🎜🎜#

Das obige ist der detaillierte Inhalt vonSo legen Sie Fremdschlüssel in MySQL fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

So erstellen Sie eine SQL -Datenbank So erstellen Sie eine SQL -Datenbank Apr 09, 2025 pm 04:24 PM

Das Erstellen einer SQL -Datenbank umfasst 10 Schritte: Auswählen von DBMs; Installation von DBMs; Erstellen einer Datenbank; Erstellen einer Tabelle; Daten einfügen; Daten abrufen; Daten aktualisieren; Daten löschen; Benutzer verwalten; Sichern der Datenbank.

See all articles