FOREIGN KEY là một cột hoặc nhóm cột thiết lập liên kết giữa dữ liệu của hai bảng. Nói cách khác, FOREIGN KEY thiết lập mối quan hệ giữa hai bảng. Nó cũng tăng cường toàn vẹn dữ liệu vì PRIMARY KEY của bảng này liên kết với FOREIGN KEY của bảng kia.
Cú pháp
FOREIGN KEY [column_name] REFERENCES [table_having_Primary_Key] ([column_name]);
REFERENCES: từ khóa.column_name: danh sách cột đặt FK.table_having_Primary_Key: tên bảng cha chứa PRIMARY KEY.column_name: danh sách cột PRIMARY KEY của bảng cha.
Ví dụ
Tạo bảng Customer (cha) và Orders (con) với FK:
mysql> CREATE TABLE Customer(
Cust_ID INT PRIMARY KEY,
First_name VARCHAR(20),
Last_name VARCHAR(20),
City VARCHAR(10)
);
Query OK, 0 rows affected (0.13 sec)
mysql> CREATE TABLE Orders(
Order_Id INT PRIMARY KEY,
Product_Name VARCHAR(25),
Orderdate DATE,
Cust_ID INT,
FOREIGN KEY(Cust_ID) REFERENCES Customer(Cust_id)
);
Query OK, 0 rows affected (0.13 sec)
mysql> DESCRIBE Orders;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Order_Id | int(11) | NO | PRI | NULL | |
| Product_Name | varchar(25) | YES | | NULL | |
| Orderdate | date | YES | | NULL | |
| Cust_ID | int(11) | YES | MUL | NULL | |
+--------------+-------------+------+-----+---------+-------+
Bảng Customer là Parent table (bảng cha / referenced), bảng Orders là Child table (bảng con / referencing). Mỗi hàng trong Orders phải có Cust_ID tồn tại trong Customer.