Zurück zu: SQL Tutorial
SQL FOREIGN KEY Einschränkung
Die FOREIGN KEY
Einschränkung wird verwendet, um Aktionen zu verhindern, die Verknüpfungen zwischen Tabellen zerstören würden.
Ein FOREIGN KEY
ist ein Feld (oder eine Sammlung von Feldern) in einer Tabelle, das auf den PRIMARY KEY
in einer anderen Tabelle verweist.
Die Tabelle mit dem Fremdschlüssel wird als untergeordnete Tabelle bezeichnet, und die Tabelle mit dem Primärschlüssel wird als referenzierte oder übergeordnete Tabelle bezeichnet.
Schauen Sie sich die folgenden beiden Tabellen an:
Personentabelle
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Tabelle „Bestellungen“
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Beachten Sie, dass die Spalte „PersonID“ in der Tabelle „Orders“ auf die Spalte „PersonID“ in der Tabelle „Personen“ verweist.
Die Spalte „PersonID“ in der Tabelle „Personen“ ist der PRIMARY KEY
in der Tabelle „Personen“.
Die Spalte „PersonID“ in der Tabelle „Bestellungen“ ist ein FOREIGN KEY
in der Tabelle „Bestellungen“.
Die FOREIGN KEY
Einschränkung verhindert, dass ungültige Daten in die Fremdschlüsselspalte eingefügt werden, da es sich dabei um einen der in der übergeordneten Tabelle enthaltenen Werte handeln muss.
SQL FOREIGN KEY bei CREATE TABLE
Das folgende SQL erstellt einen FOREIGN KEY
für die Spalte „PersonID“, wenn die Tabelle „Orders“ erstellt wird:
MySQL:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
Um die Benennung einer FOREIGN KEY
Einschränkung zu ermöglichen und eine FOREIGN KEY
Einschränkung für mehrere Spalten zu definieren, verwenden Sie die folgende SQL Syntax:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
SQL FOREIGN KEY für ALTER TABLE
Um eine FOREIGN KEY
Einschränkung für die Spalte „PersonID“ zu erstellen, wenn die Tabelle „Orders“ bereits erstellt wurde, verwenden Sie das folgende SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Um die Benennung einer FOREIGN KEY
Einschränkung zu ermöglichen und eine FOREIGN KEY
Einschränkung für mehrere Spalten zu definieren, verwenden Sie die folgende SQL Syntax:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
DROP eine FOREIGN KEY Einschränkung
Um eine FOREIGN KEY
Einschränkung zu löschen, verwenden Sie das folgende SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;