Neueste Web-Entwicklung Tutorials
 

SQL Fremdschlüssel


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