在MySQL中,建表的時(shí)候有時(shí)需要添加外鍵,以保持不同表之間的關(guān)系一致性,下面我們將介紹如何在建表時(shí)添加外鍵。
首先,我們需要在一個(gè)表中制定一個(gè)或多個(gè)列,這些列將被用于關(guān)聯(lián)另一個(gè)表中的列。外鍵列必須具有與參考表中列的數(shù)據(jù)類型和長度相同的屬性。此外,外鍵列必須在本表中定義為索引列。
CREATE TABLE table1 ( id INT PRIMARY KEY, name VARCHAR(20), age INT, country VARCHAR(20) ); CREATE TABLE table2 ( id INT PRIMARY KEY, title VARCHAR(20), author VARCHAR(20), table1_id INT, FOREIGN KEY (table1_id) REFERENCES table1(id) );
在上面的示例中,我們創(chuàng)建了兩個(gè)表,table1和table2,其中table2的table1_id列是table1表的id列的外鍵。
在創(chuàng)建表時(shí)使用FOREIGN KEY關(guān)鍵字以及REFERENCES關(guān)鍵字定義參考表和參考列。在本例中,table2的table1_id列必須參考table1的id列。
當(dāng)添加外鍵時(shí),您可以指定添加外鍵約束的名字。
CREATE TABLE table2 ( id INT PRIMARY KEY, title VARCHAR(20), author VARCHAR(20), table1_id INT, CONSTRAINT table2_fk FOREIGN KEY (table1_id) REFERENCES table1(id) );
外鍵名必須在數(shù)據(jù)庫中是唯一的。
在MySQL中,外鍵約束默認(rèn)情況下是啟用的,也就是說,您不能插入不在參考表中的值。
為了插入不包括在參考表中的數(shù)據(jù),您可以使用CASCADE選項(xiàng),該選項(xiàng)將刪除包括外鍵約束的所有行。
CREATE TABLE table2 ( id INT PRIMARY KEY, title VARCHAR(20), author VARCHAR(20), table1_id INT, CONSTRAINT table2_fk FOREIGN KEY (table1_id) REFERENCES table1(id) ON DELETE CASCADE );
上面的代碼將在刪除包含外鍵值的行時(shí),同時(shí)刪除參考表中相應(yīng)的行。
以上就是MySQL建表時(shí)添加外鍵的詳細(xì)介紹,希望對你有用!