FOREIGN KEY คือคอลัมน์หรือชุดคอลัมน์ที่ใช้สร้างลิงก์ระหว่างข้อมูลในสองตาราง หรือพูดอีกนัยหนึ่ง FOREIGN KEY constraint เกี่ยวข้องกับสองตาราง ใช้เพิ่มความสมบูรณ์ของข้อมูล เพราะ PRIMARY KEY ของตารางหนึ่งลิงก์กับ FOREIGN KEY ของอีกตาราง
ไวยากรณ์
FOREIGN KEY [column_name] REFERENCES [table_having_Primary_Key] ([column_name]);
REFERENCES เป็นคีย์เวิร์ด column_name คือรายการคอลัมน์ที่ตั้ง FOREIGN KEY table having Primary Key คือชื่อตารางที่มี PRIMARY KEY column_name คือรายการคอลัมน์ที่ตั้ง PRIMARY KEY
ตัวอย่าง
มีสองตาราง 'Customer' และ 'Orders' ความสัมพันธ์สร้างโดย foreign key ใน 'orders' ระบุโดยฟิลด์ 'Cust_Id':
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 | | +--------------+-------------+------+-----+---------+-------+
ตาราง 'Customer' เรียกว่า Parent table หรือ referenced table ตาราง 'Orders' เรียกว่า child table หรือ referencing table แถวใน child table ต้องมีค่าที่มีอยู่ใน parent table