SQL FOREIGN KEY: So erstellen Sie in SQL Server anhand eines Beispiels
Was ist ein Fremdschlüssel?
A Unbekannter Schlüssel Bietet eine Möglichkeit, die referenzielle Integrität innerhalb von SQL Server durchzusetzen. Vereinfacht ausgedrückt stellt der Fremdschlüssel sicher, dass Werte in einer Tabelle in einer anderen Tabelle vorhanden sein müssen.
Regeln für FOREIGN KEY
- NULL ist im SQL-Fremdschlüssel zulässig.
- Die Tabelle, auf die verwiesen wird, wird als übergeordnete Tabelle bezeichnet
- Die Tabelle mit dem Fremdschlüssel wird in SQL als untergeordnete Tabelle bezeichnet.
- Der SQL-Fremdschlüssel in der untergeordneten Tabelle verweist auf den Primärschlüssel in der übergeordneten Tabelle.
- Diese Eltern-Kind-Beziehung erzwingt die Regel, die als „Referential Integrity"
Das folgende Beispiel für einen Fremdschlüssel in SQL mit Diagramm fasst alle oben genannten Punkte für FOREIGN KEY zusammen.

So erstellen Sie einen Fremdschlüssel in SQL
Wir können ein erstellen Unbekannter Schlüssel in SQL Server in 2 Möglichkeiten:
- SQL Server Management Studio
- T-SQL
SQL Server Management Studio
Übergeordnete Tabelle: Angenommen, wir haben eine vorhandene übergeordnete Tabelle als „Kurs“. Course_ID und Course_name sind zwei Spalten mit Course_Id als Primärschlüssel.
Kindertisch: Wir müssen die zweite Tabelle als untergeordnete Tabelle erstellen. „Course_ID“ und „Course_Strength“ als zwei Spalten. Allerdings muss „Course_ID“ ein Fremdschlüssel sein.
Schritt 1) Klicken Sie mit der rechten Maustaste auf Tabellen > Neu > Tabelle…
Schritt 2) Geben Sie zwei Spaltennamen ein: „Course_ID“ und „Course_Strength“. Klicken Sie mit der rechten Maustaste auf die Spalte „Course_Id“. Klicken Sie nun auf Beziehung.
Schritt 3) In 'Fremdschlüsselbeziehung,' Klicken 'Hinzufügen'
Schritt 4) Klicken Sie unter „Tabellen- und Spaltenspezifikation“ auf '…' Symbol
Schritt 5) Wählen Sie „Primärschlüsseltabelle“ als „KURS“ und die neue Tabelle, die jetzt erstellt wird, als „Fremdschlüsseltabelle“ aus dem Dropdown-Menü aus.
Schritt 6) „Primärschlüsseltabelle“ – Wählen Sie die Spalte „Course_Id“ als Spalte „Primärschlüsseltabelle“ aus.
„Fremdschlüsseltabelle“ – Wählen Sie die Spalte „Course_Id“ als Spalte „Fremdschlüsseltabelle“ aus. OK klicken.
Schritt 7) Klicken Sie auf Hinzufügen.
Schritt 8) Geben Sie als Tabellennamen „Course_Strength“ ein und klicken Sie auf OK.
Ergebnis: Wir haben eine Eltern-Kind-Beziehung zwischen festgelegt 'Kurs' und 'Course_strength.'
T-SQL: Erstellen Sie eine Parent-Child-Tabelle mit T-SQL
Übergeordnete Tabelle: Überdenken Sie es noch einmal: Wir haben eine vorhandene übergeordnete Tabelle mit dem Tabellennamen „Kurs“.
Course_ID und Course_name sind zwei Spalten mit Course_Id als Primärschlüssel.
Kindertisch: Wir müssen die zweite Tabelle als untergeordnete Tabelle mit dem Namen „Course_Strength_TSQL“ erstellen.
„Course_ID“ und „Course_Strength“ als zwei Spalten für die untergeordnete Tabelle Course_Strength_TSQL. Allerdings muss „Course_ID“ ein Fremdschlüssel sein.
Nachfolgend finden Sie die Syntax zum Erstellen einer Tabelle mit FOREIGN KEY
Syntax:
CREATE TABLE childTable ( column_1 datatype [ NULL |NOT NULL ], column_2 datatype [ NULL |NOT NULL ], ... CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n) [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] );
Hier ist eine Beschreibung der oben genannten Parameter:
- childTable ist der Name der Tabelle, die erstellt werden soll.
- Spalte_1, Spalte_2 – die Spalten, die der Tabelle hinzugefügt werden sollen.
- fkey_name – der Name der zu erstellenden Fremdschlüsseleinschränkung.
- child_column1, child_column2…child_column_n – der Name der chidTable-Spalten, um auf den Primärschlüssel in parentTable zu verweisen.
- parentTable – der Name der übergeordneten Tabelle, auf deren Schlüssel in der untergeordneten Tabelle verwiesen werden soll.
- parent_column1, parent_column2, … parent_column3 – die Spalten, die den Primärschlüssel der übergeordneten Tabelle bilden.
- AUF LÖSCHEN. Ein optionaler Parameter. Es gibt an, was mit den untergeordneten Daten nach dem Löschen der übergeordneten Daten passiert. Einige der Werte für diesen Parameter umfassen NO ACTION, SET NULL, CASCADE oder SET DEFAULT.
- ON UPDATE – Ein optionaler Parameter. Es gibt an, was mit den untergeordneten Daten nach der Aktualisierung der übergeordneten Daten passiert. Einige der Werte für diesen Parameter umfassen NO ACTION, SET NULL, CASCADE oder SET DEFAULT.
- KEINE AKTION – wird zusammen mit ON DELETE und ON UPDATE verwendet. Das bedeutet, dass mit den untergeordneten Daten nach der Aktualisierung oder Löschung der übergeordneten Daten nichts passiert.
- CASCADE – wird zusammen mit ON DELETE und ON UPDATE verwendet. Die untergeordneten Daten werden entweder gelöscht oder aktualisiert, nachdem die übergeordneten Daten gelöscht oder aktualisiert wurden.
- SET NULL – wird zusammen mit ON DELETE und ON UPDATE verwendet. Das untergeordnete Element wird auf Null gesetzt, nachdem die übergeordneten Daten aktualisiert oder gelöscht wurden.
- SET DEFAULT – wird zusammen mit ON DELETE und ON UPDATE verwendet. Die untergeordneten Daten werden nach einer Aktualisierung oder Löschung der übergeordneten Daten auf Standardwerte gesetzt.
Sehen wir uns ein Beispiel für einen Fremdschlüssel in SQL an, um eine Tabelle mit einer Spalte als FREMDSCHLÜSSEL zu erstellen:
Beispiel für einen Fremdschlüssel in SQL
Abfrage:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
Schritt 1) Führen Sie die Abfrage aus, indem Sie auf „Ausführen“ klicken.
Ergebnis: Wir haben eine Eltern-Kind-Beziehung zwischen festgelegt 'Kurs' und 'Course_strength_TSQL.'
Verwenden von ALTER TABLE
Jetzt lernen wir, wie man Fremdschlüssel in SQL verwendet und Fremdschlüssel in SQL Server mit der ALTER TABLE-Anweisung hinzufügt. Wir verwenden die unten angegebene Syntax:
ALTER TABLE childTable ADD CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);
Hier ist eine Beschreibung der oben verwendeten Parameter:
- childTable ist der Name der Tabelle, die erstellt werden soll.
- Spalte_1, Spalte_2 – die Spalten, die der Tabelle hinzugefügt werden sollen.
- fkey_name – der Name der zu erstellenden Fremdschlüsseleinschränkung.
- child_column1, child_column2…child_column_n – der Name der chidTable-Spalten, um auf den Primärschlüssel in parentTable zu verweisen.
- parentTable – der Name der übergeordneten Tabelle, auf deren Schlüssel in der untergeordneten Tabelle verwiesen werden soll.
- parent_column1, parent_column2, … parent_column3 – die Spalten, die den Primärschlüssel der übergeordneten Tabelle bilden.
Beispiel für das Hinzufügen eines Fremdschlüssels in der Tabelle ändern:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
Wir haben einen Fremdschlüssel namens fkey_student_admission für die Abteilungstabelle erstellt. Dieser Fremdschlüssel verweist auf die Zulassungsspalte der Studententabelle.
Beispielabfrage FOREIGN KEY
Sehen wir uns zunächst die Daten unserer übergeordneten Tabelle an, COURSE.
Abfrage:
SELECT * from COURSE;
Fügen wir nun eine Zeile in die untergeordnete Tabelle ein: 'Course_strength_TSQL.'
Wir werden versuchen, zwei Arten von Zeilen einzufügen
- Der erste Typ, für den Course_Id in der untergeordneten Tabelle in Course_Id der übergeordneten Tabelle vorhanden ist. dh Course_Id = 1 und 2
- Der zweite Typ, für den Course_Id in der untergeordneten Tabelle nicht in der Course_Id der übergeordneten Tabelle vorhanden ist. dh Course_Id = 5
Abfrage:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
Ergebnis: Lassen Sie uns gemeinsam die Abfrage ausführen, um unsere übergeordnete und untergeordnete Tabelle anzuzeigen
Zeilen mit Course_ID 1 und 2 sind in der Course_strength-Tabelle vorhanden. Dagegen ist Course_ID 5 eine Ausnahme.
Zusammenfassung
- Jeder Wert des Fremdschlüssels muss Teil davon sein Primärschlüssel anderer Tische.
- Der MySQL Der Fremdschlüssel kann auf eine andere Spalte in derselben Tabelle verweisen. Diese Referenz wird als Selbstreferenz bezeichnet.
- SQL-Fremdschlüsseleinschränkung: wird verwendet, um die Verknüpfungen zwischen Tabellen und ungültigen Daten zu sichern, die in die Fremdschlüsselspalte eingefügt werden sollen.
- Sie können einen Fremdschlüssel mit „Tabelle erstellen“, „Tabelle ändern“ oder erstellen SQL Server Management Studio.
- Hier ist der Unterschied zwischen Primärschlüssel und Fremdschlüssel: Mehr Info