在MySQL中,建表時可以利用外鍵約束來保證數據完整性。
首先,建立主表(即包含外鍵的表)和從表(即被引用的表)。主表中需要建立一個字段作為外鍵,它將引用從表中的某個字段。
CREATE TABLE people ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, country_id INT, FOREIGN KEY (country_id) REFERENCES countries(id) );
在上面的代碼中,people表中的country_id字段被設置成了外鍵,它將引用countries表中的id字段。
接下來,建立從表,并在其中建立被引用的字段。
CREATE TABLE countries ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) );
在以上代碼中,countries表中的id字段將被people表中的country_id字段引用。
需要注意的是,如果外鍵引用的表或字段不存在,或者被引用的字段不是一個主鍵或唯一鍵,那么建立外鍵約束時將會失敗。
當數據被插入到主表中時,如果引用的從表中不存在對應的記錄,則會報錯。
當然,外鍵也可以設置一些屬性,比如ON DELETE CASCADE表示如果從表記錄被刪除,則主表中對應的記錄也會被刪除。
CREATE TABLE people ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, country_id INT, FOREIGN KEY (country_id) REFERENCES countries(id) ON DELETE CASCADE );
這里需要注意的是,外鍵約束只能針對引擎支持的表類型,比如InnoDB,而對于MyISAM等表類型是不支持外鍵約束的。