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.
- Die 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
















