Rumah >pangkalan data >tutorial mysql >Pengetahuan asas kunci asing dalam MySQL?
Kunci asing ialah sejenis kekangan yang boleh digunakan untuk mengekalkan integriti antara jadual. Jika kita mencipta kunci asing untuk satu jadual, maka jadual itu dipanggil jadual anak dan jadual kedua dipanggil jadual induk.
Dalam jadual induk, kunci asing akan bertindak sebagai kunci utama. Mari buat jadual.
Buat subjadual.
mysql> create table StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> ); Query OK, 0 rows affected (0.91 sec)
mysql> create table College -> ( -> StudentFKPK int, -> CourseId int, -> CourseName varchar(200), -> CollegeName varchar(200), -> primary key(StudentFKPK) -> ); Query OK, 0 rows affected (0.46 sec)
Dalam jadual induk, lajur "StudentFKPK" ialah kunci utama. Kami akan menambah kunci asing menggunakan arahan ALTER.
Berikut ialah sintaks untuk menambah kunci asing.
ALTER table yourChildTableName add constraint anyConstraintName foreign key(primary key column name for parent table) references College(primary key column name for parent table);
Berikut ialah pelaksanaan sintaks di atas dalam pertanyaan berikut.
mysql> alter table StudentEnrollment add constraint StudCollegeConst foreign key(StudentFKPK) references College(StudentFKPK); Query OK, 0 rows affected (1.78 sec) Records: 0 Duplicates: 0 Warnings: 0
Sintaks untuk menyemak kewujudan kekangan kunci asing.
SELECT TABLE_NAME, COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NA FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHER REFERENCED_TABLE_NAME = 'yourParentTableName or your referencedTableName';
Sintaks di atas dilaksanakan dalam pertanyaan di bawah.
mysql> SELECT -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLE_NAME = 'College';
Ini adalah outputnya.
+-------------------+-------------+------------------+-----------------------+------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | +-------------------+-------------+------------------+-----------------------+------------------------+ | StudentEnrollment | StudentFKPK | StudCollegeConst | College | StudentFKPK | +-------------------+-------------+------------------+-----------------------+------------------------+ 1 row in set, 2 warnings (0.03 sec)
Kami mempunyai lajur bernama StudentFKPK dan CONSTRAINT_NAME ialah StudCollegeConst.
Atas ialah kandungan terperinci Pengetahuan asas kunci asing dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!