Rumah >pangkalan data >tutorial mysql >Pengetahuan asas kunci asing dalam MySQL?

Pengetahuan asas kunci asing dalam MySQL?

WBOY
WBOYke hadapan
2023-09-04 10:49:02523semak imbas

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)

Buat jadual ibu bapa

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam