11 - SQL FOREIGN KEY Constraint
11 - SQL FOREIGN KEY Constraint
A FOREIGN KEY is a field (or collection of fields) in one table, that refers to the PRIMARY KEY in another table.
The table with the foreign key is called the child table, and the table with the primary key is called the referenced or parent
table.
Persons Table
PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20
Orders Table
1 77895 3
2 44678 3
3 22456 2
4 24562 1
Notice that the "PersonID" column in the "Orders" table points to the "PersonID" column in the "Persons" table.
The "PersonID" column in the "Persons" table is the PRIMARY KEY in the "Persons" table.
The "PersonID" column in the "Orders" table is a FOREIGN KEY in the "Orders" table.
The FOREIGN KEY constraint prevents invalid data from being inserted into the foreign key column,
because it has to be one of
the values contained in the parent table.
SQL FOREIGN KEY on CREATE TABLE
The following SQL creates a FOREIGN KEY on the "PersonID" column when the "Orders" table is created:
MySQL:
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
To allow naming of a FOREIGN KEY constraint, and for defining a FOREIGN KEY constraint on multiple columns, use the following
SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
To allow naming of a FOREIGN KEY constraint, and for defining a FOREIGN KEY constraint on multiple columns, use the following
SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
MySQL:
with W3schools Spaces
Get started
COLOR PICKER
LIKE US
Get certified
by completing
a course today!
school
w3 s
1
CE
02
TI 2
R
FI .
ED
Get started
CODE GAME
Play Game
CSS Tutorial
CSS Reference
JavaScript Tutorial
JavaScript Reference
How To Tutorial
SQL Reference
SQL Tutorial
Python Reference
Python Tutorial
W3.CSS Reference
W3.CSS Tutorial
Bootstrap Reference
Bootstrap Tutorial
PHP Reference
PHP Tutorial
HTML Colors
Java Tutorial
Java Reference
C++ Tutorial
Angular Reference
jQuery Tutorial
jQuery Reference
CSS Examples
CSS Course
JavaScript Examples
JavaScript Course
How To Examples
Front End Course
SQL Examples
SQL Course
Python Examples
Python Course
W3.CSS Examples
PHP Course
Bootstrap Examples
jQuery Course
PHP Examples
Java Course
Java Examples
C++ Course
XML Examples
C# Course
jQuery Examples
XML Course
Get Certified »
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning.
Tutorials, references, and examples are
constantly reviewed to avoid errors, but we cannot warrant full correctness of all content.
While using W3Schools, you agree to have read and accepted our
terms of use, cookie and privacy policy.