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

ฉันจะดูคีย์ต่างประเทศทั้งหมดในคอลัมน์ตารางได้อย่างไร


หากต้องการดูคีย์นอกทั้งหมดในตารางหรือคอลัมน์ ให้ใช้คำสั่ง referenced_column_name

ขั้นแรก มีการสร้างตารางสองตารางแล้วเชื่อมโยงโดยใช้ข้อจำกัดของคีย์ภายนอก

การสร้างตารางแรก −

mysql> สร้างตาราง ForeignTable-> (-> id int,-> ชื่อ varchar(200),-> Fk_pk int-> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.43 วินาที)

หลังจากสร้างตารางแรกสำเร็จแล้ว ตารางที่สองจะถูกสร้างขึ้นดังนี้ −

mysql> สร้างตาราง primaryTable1-> (-> Fk_pk int,-> DeptName varchar(200),-> Primary key(Fk_pk)-> );Query OK, 0 แถวได้รับผลกระทบ (0.48 วินาที)

ตอนนี้ ทั้งสองตารางมีความเกี่ยวข้องกันโดยใช้คำสั่ง alter และเพิ่มการจำกัดคีย์ต่างประเทศด้วย ไวยากรณ์สำหรับสิ่งนี้มีดังนี้ −

แก้ไขตาราง yourFirstTable เพิ่มข้อจำกัด anyConstraintName foreign key(column_name ซึ่ง isacts foreign key ในตารางที่สอง) yourSecondTable(column_name ซึ่งทำหน้าที่เป็นคีย์หลักในตารางที่สอง)

ไวยากรณ์ข้างต้นถูกนำมาใช้เพื่อเชื่อมโยงทั้งสองตารางดังต่อไปนี้ −

mysql> แก้ไขตาราง ForeignTable เพิ่มข้อจำกัด constFKPK foreign key(Fk_pk) referencesprimaryTable1(Fk_pk);Query OK, 0 แถวได้รับผลกระทบ (1.57 วินาที)Records:0 Duplicates:0 Warnings:0

ตอนนี้ ไวยากรณ์เพื่อดูคีย์ต่างประเทศทั้งหมดในตารางจะได้รับดังนี้ -

สำหรับโต๊ะ −

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE REFERENCED_TABLE_NAME ='yourReferencedTableName';

ขณะนี้ ไวยากรณ์ข้างต้นถูกใช้เพื่อสร้างแบบสอบถามเพื่อดูคีย์ต่างประเทศทั้งหมด แบบสอบถามจะได้รับดังนี้ −

mysql> SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME-> จาก INFORMATION_SCHEMA.KEY_COLUMN_USAGE-> โดยที่ REFERENCED_TABLE_NAME ='primarytable1' 

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+-------------+-------------+----------------- +----------------------------------------------------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |+-------------+-------------+----------------+ ------------------------+--------------------------------------+| Foreigntable | Fk_pk | constFKPK | Primarytable1 | fk_pk |+--------------+-------------+-----------------+ ------------------------+--------------------------------------+1 แถวในชุด 2 คำเตือน (0.02 วินาที)

ในผลลัพธ์ตัวอย่าง constraint_name คือ 'constFKPK' และ table_name คือ 'foreigntable' สำหรับคอลัมน์ -

SELECTTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_SCHEMA ='yourDatabaseName' ANDREFERNAME =preference_Ne' ของคุณ' ชื่อฐานข้อมูลของคุณ' ANDREFERNAME =ชื่อของคุณ' 

แบบสอบถามเพื่อแสดงคีย์ต่างประเทศทั้งหมดในคอลัมน์จะได้รับโดยใช้ไวยากรณ์ข้างต้น แบบสอบถามมีดังต่อไปนี้ −

mysql> SELECT-> TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME-> FROM-> INFORMATION_SCHEMA.KEY_COLUMN_USAGE-> WHERE-> REFERENCED_COLUMN_NAME-> FROM-> INFORMATION_SCHEMA.KEY_COLUMN_USAGE-> WHERE-> REFERENCED_TABLE'_SCHED'> REFERENCED_TABLE'_SCHEMA'> FHERE-> REFERENCED_TABLE'_SCHEMA' 

ผลลัพธ์ที่ได้จะเป็นดังนี้:

<ก่อนหน้า>+-------------+-------------+----------------- +----------------------------------------------------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME |REFERENCED_COLUMN_NAME |+-------------+-------------+---------------- -------------------------------------------------------------- +| Foreigntable | Fk_pk | constFKPK | Primarytable1 | fk_pk |+--------------+-------------+-----------------+ ------------------------+--------------------------------------+1 แถวในชุด 2 คำเตือน (0.03 วินาที)