SQL Fremdschlüssel
Ein Fremdschlüssel in einer Tabelle zeigt auf einen Primärschlüssel in einer anderen Tabelle.
Lassen Sie uns die Fremdschlüssel mit einem Beispiel veranschaulichen. Schauen Sie sich die folgenden beiden Tabellen:
Die "Persons" Tabelle:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
Die "Orders" Tabelle:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Beachten Sie, dass die "P_Id" Spalte in der "Orders" Tabelle verweist auf die "P_Id" Spalte in der "Persons" Tabelle.
Die "P_Id" Spalte in der "Persons" Tabelle ist der Primärschlüssel in der "Persons" Tabelle.
Die "P_Id" Spalte in der "Orders" Tabelle ist ein Fremdschlüssel in der "Orders" Tabelle.
Die FOREIGN KEY-Einschränkung wird verwendet, Aktionen zu verhindern, die Verbindungen zwischen den Tabellen zerstören würde.
Die FOREIGN KEY-Einschränkung verhindert auch ungültige Daten aus in die Fremdschlüsselspalte eingeführt wird, weil es einer der Werte in der Tabelle auf sie verweist enthalten sein muss.
SQL Fremdschlüssel auf CREATE TABLE
Die folgende SQL - Anweisung erstellt einen Fremdschlüssel auf der "P_Id" Spalte , wenn die "Orders" Tabelle erstellt wird:
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Zur Benennung einer FOREIGN KEY-Einschränkung zu erlauben und für eine FOREIGN KEY-Einschränkung auf mehrere Spalten definieren, verwenden Sie die folgende SQL-Syntax:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
SQL Fremdschlüssel auf ALTER TABLE
Um eine FOREIGN KEY - Einschränkung für die erstellen "P_Id" Spalte , wenn die "Orders" Tabelle bereits erstellt wird, verwenden Sie die folgende SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Zur Benennung einer FOREIGN KEY-Einschränkung zu erlauben und für eine FOREIGN KEY-Einschränkung auf mehrere Spalten definieren, verwenden Sie die folgende SQL-Syntax:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Um einen Fremdschlüssel löschen Constraint
Um eine FOREIGN KEY-Einschränkung zu löschen, verwenden Sie die folgende SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders