Foreign Keys เป็นประเภทของข้อจำกัดที่สามารถใช้เพื่อรักษาความสมบูรณ์ระหว่างตาราง หากเราสร้าง Foreign Key สำหรับตาราง ตารางนี้จะเรียกว่าตารางลูกในขณะที่ตารางที่สองจะเรียกว่าตารางหลัก
ในตารางพาเรนต์ คีย์นอกจะทำหน้าที่เป็นคีย์หลัก เรามาสร้างตารางกันเถอะ
การสร้างตารางลูก
mysql> สร้างตาราง StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> );Query OK, 0 แถวได้รับผลกระทบ (0.91 วินาที)
การสร้างตารางหลัก
mysql> สร้างตาราง College -> ( -> StudentFKPK int, -> CourseId int, -> CourseName varchar(200), -> CollegeName varchar(200), -> คีย์หลัก (StudentFKPK) -> ); แบบสอบถามตกลง , ได้รับผลกระทบ 0 แถว (0.46 วินาที)
ในตารางหลัก คอลัมน์ 'StudentFKPK' เป็นคีย์หลัก เราจะใช้คำสั่ง ALTER เพื่อเพิ่มคีย์นอก
ต่อไปนี้เป็นไวยากรณ์เพื่อเพิ่มคีย์ต่างประเทศ
เปลี่ยนตาราง yourChildTableName เพิ่มข้อจำกัด anyConstraintNameforeign key (ชื่อคอลัมน์คีย์หลักสำหรับตารางพาเรนต์) การอ้างอิง College (ชื่อคอลัมน์คีย์หลักสำหรับตารางพาเรนต์);
ต่อไปนี้เป็นการนำไวยากรณ์ข้างต้นไปใช้ในแบบสอบถามด้านล่าง
mysql> แก้ไขตาราง StudentEnrollment เพิ่มข้อจำกัด StudCollegeConst foreign key (StudentFKPK) อ้างอิง College(StudentFKPK) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (1.78 วินาที) บันทึก:0 รายการซ้ำ:0 คำเตือน:0
ไวยากรณ์เพื่อตรวจสอบว่ามีข้อ จำกัด ของคีย์ต่างประเทศหรือไม่
SELECT TABLE_NAME, COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NA จาก INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHER REFERENCED_TABLE_NAME ='yourParentTableName หรือชื่ออ้างอิงของคุณ';
ไวยากรณ์ข้างต้นถูกนำมาใช้ในแบบสอบถามด้านล่าง
mysql> SELECT -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLE'_NAME =วิทยาลัยนี่คือผลลัพธ์
<ก่อนหน้า>+-------------------+-------------+----------- ----------------------------------------------------------------------------- -----+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |+-------------------+-------------+------------- ----------------------------------------------------------------------------------------- ----+| การลงทะเบียนนักศึกษา | นักเรียนFKPK | StudCollegeConst | วิทยาลัย | StudentFKPK |+--------------------------+-------------+------------- --------------------------------------------------------------------------- ----+1 แถวในชุด 2 คำเตือน (0.03 วินาที)
เรามีคอลัมน์ชื่อ StudentFKPK และ CONSTRAINT_NAME คือ StudCollegeConst