Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คุณหมายถึงอะไรโดย FOREIGN KEY และเราจะใช้ในตาราง MySQL ได้อย่างไร


ที่จริง FOREIGN KEY คือคอลัมน์หรือชุดค่าผสมของคอลัมน์ที่สามารถใช้เพื่อตั้งค่าการเชื่อมโยงระหว่างข้อมูลในสองตาราง กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าข้อจำกัดของ FOREIGN KEY เกี่ยวข้องกับสองตาราง นอกจากนี้ยังใช้เพื่อปรับปรุงความสมบูรณ์ของข้อมูลเนื่องจาก PRIMARY KEY ของตารางเชื่อมโยงกับ FOREIGN KEY ของตารางอื่นๆ

ไวยากรณ์

FOREIGN KEY [column_name] REFERENCES [table having Primary Key] ([column_name]);

ข้อมูลอ้างอิงเป็นคำสำคัญ column_name คือรายการของคอลัมน์ที่จะตั้งค่า FOREIGN KEY; ตารางที่มีคีย์หลักคือชื่อของตารางที่มีคีย์หลัก column_name คือรายการคอลัมน์ที่ตั้งค่า PRIMARY KEY

ตัวอย่าง

สมมติว่าเรามี 'ลูกค้า' และ 'คำสั่งซื้อ' สองตาราง ความสัมพันธ์ระหว่างตารางทั้งสองสามารถสร้างได้ด้วยคีย์ต่างประเทศในตาราง 'คำสั่งซื้อ' ที่ระบุโดยฟิลด์ '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    |       |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.04 sec)

ที่นี่ตาราง 'ลูกค้า' เรียกว่าตารางหลักหรือตารางอ้างอิงและตาราง 'คำสั่งซื้อ' จะเรียกว่าตารางย่อยหรือตารางอ้างอิง แถวในตารางลูกต้องมีค่าที่มีอยู่ในตารางหลัก ตัวอย่างเช่น แต่ละแถวในตาราง 'คำสั่งซื้อ' ต้องมี 'Cust_Id' ที่มีอยู่ในตาราง 'ลูกค้า'