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

พื้นฐานของคีย์ต่างประเทศใน MySQL?


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