MySQL外來鍵約束

2021-07-30 23:09:14 字數 761 閱讀 5514

關係鍵是關聯式資料庫的重要組成部分。關係鍵是乙個表中的乙個或幾個屬性,用來標識該錶的每一行或與另乙個表產生聯絡。 其中就包括外來鍵

又稱主碼,資料庫表中對儲存資料物件予以唯一和完整標識的資料列或屬性的組合。乙個資料列只能有乙個主鍵,且主鍵的取值不能缺失,即不能為null。

技術角度看,primary key和unique key有相似之處。但還是有差異:

又稱外部鍵。在關聯式資料庫中,每個資料表都是由關係來連繫彼此的關係,父資料表(parent entity)的主鍵(primary key)會放在另乙個資料表,當做屬性以建立彼此的關係,而這個屬性就是外來鍵。

比如,學生跟老師之間是教學關係,學生資料表會有個屬性叫指導老師(fk),而這個值就是對應到老師資料表的老師代號(pk),學生的指導老師就是外來鍵。

注意 : 外來鍵不一定要與相應主鍵同名,只是在應用中為便於識別,當主鍵與相應外來鍵屬於不同關係時,往往取同名

保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料。 使兩張表形成關聯,外來鍵只能引用外表中的列的值或使用空值。

如果不使用外來鍵,表2的學號字段插了乙個值(比如20140999999),但該值在表1中並沒有。這時,資料庫允許插入,並不會對插入的資料做關係檢查。

然而在設定外來鍵時,你插入表2學號字段的值必須要求在表1的學號字段能找到。 同時,如果你要刪除表1的某個學號字段,必須保證表2中沒有引用該字段值的列,否則就沒法刪除。這就是所謂的保持資料的一致性和完整性。

如果表2還引用表1的某個學號,你卻把表1中的這個學號刪了,表2就不知道這個學號對應的學生是哪個學生。

mysql約束與外來鍵 MySQL 外來鍵與約束

外來鍵的建立 建表如下 create table parent id int not null,primary key id type innodb create table child id int,parent id int,foreign key parent id references pa...

MySQL 外來鍵約束

建立測試主表.id 是主鍵.create table test main id int,value varchar 10 primary key id 建立測試子表.create table test sub id int,main id int,value varchar 10 primary k...

MySQL外來鍵約束

innodb型別表有乙個其他儲存引擎不支援的特性 外來鍵約束。當b表的外來鍵關聯到a表的主鍵時 表b是父表a表的子表 如果刪除了a表,那麼b中的外來鍵則仍然關聯著乙個不存在的表的主鍵。而外鍵約束則設定了當約束被破壞時應該應用的的規則,包括防止約束破壞。建立乙個外來鍵約束的語法是 foreign ke...