外鍵是一種約束類型,可用于維護(hù)表之間的完整性。如果我們?yōu)橐粋€(gè)表創(chuàng)建外鍵,那么該表稱為子表,而第二個(gè)表稱為父表。
在父表中,外鍵將充當(dāng)主鍵。讓我們創(chuàng)建一個(gè)表。
創(chuàng)建子表。
mysql> create table StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> ); Query OK, 0 rows affected (0.91 sec)
登錄后復(fù)制
創(chuàng)建父表
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)
登錄后復(fù)制
在父表中,“StudentFKPK”列是主鍵。我們將使用 ALTER 命令添加外鍵。
以下是添加外鍵的語法。
ALTER table yourChildTableName add constraint anyConstraintName foreign key(primary key column name for parent table) references College(primary key column name for parent table);
登錄后復(fù)制
以下是上述語法在以下查詢中的實(shí)現(xiàn)。
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
登錄后復(fù)制
檢查外鍵約束是否存在的語法。
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';
登錄后復(fù)制
上面的語法在下面的查詢中實(shí)現(xiàn)。
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';
登錄后復(fù)制
這是輸出。
+-------------------+-------------+------------------+-----------------------+------------------------+ | 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)
登錄后復(fù)制
我們有一個(gè)名為 StudentFKPK 的列,CONSTRAINT_NAME 是 StudCollegeConst。
以上就是MySQL 中外鍵的基礎(chǔ)知識?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!