MySQL創(chuàng)建外碼設(shè)置是在數(shù)據(jù)庫中建立關(guān)聯(lián)關(guān)系的一種方式, 一般用于多個(gè)表之間的關(guān)聯(lián)。外碼設(shè)置可以使數(shù)據(jù)庫中的表之間的關(guān)系更加清晰、可控。
外碼設(shè)置主要是通過使用FOREIGN KEY關(guān)鍵字來實(shí)現(xiàn)的。在創(chuàng)建表的時(shí)候,可以通過語句中的FOREIGN KEY子句來實(shí)現(xiàn)外碼的設(shè)定。例如:
CREATE TABLE student_info( id INT PRIMARY KEY, name VARCHAR(20), department VARCHAR(20) ); CREATE TABLE score( id INT PRIMARY KEY, student_id INT, subject VARCHAR(20), score INT, FOREIGN KEY(student_id) REFERENCES student_info(id) );
在以上例子中,我們創(chuàng)建了兩個(gè)表:student_info和score。student_info表示學(xué)生的基本信息,score表示學(xué)生的成績信息。在score表中,我們使用FOREIGN KEY將student_info表中的id設(shè)為外碼,用以建立學(xué)生基本信息和成績信息之間的關(guān)聯(lián)關(guān)系。
需要注意的是,在使用FOREIGN KEY建立外碼關(guān)聯(lián)關(guān)系的時(shí)候,必須保證被引用的表中的相應(yīng)字段是一個(gè)UNIQUE或PRIMARY KEY。否則,MySQL將會提示錯誤。
另外,需要注意的是,通過FOREIGN KEY設(shè)置的外碼約束,只是一個(gè)完整性約束,而不是一種限制。這就意味著,MySQL并不會自動地在外碼設(shè)置時(shí)緊密地限制表之間的關(guān)系,而是需要開發(fā)人員自己通過編寫代碼的方式來保證關(guān)系的正確性。