MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門(mén)——day10
?一鼓鲁、外鍵
外鍵用于建立加強(qiáng)兩個(gè)表之間的聯(lián)系音同,引入外鏈后请敦,外鍵只能插入?yún)⒄樟写嬖诘闹邓寥模瑓⒄樟斜粎⒄盏闹挡荒鼙粍h除改衩,這就保證了數(shù)據(jù)的參照完整性。
1.為表添加外鍵約束:
想要真正連接兩個(gè)表的數(shù)據(jù)驯镊,就需要為表添加外鍵約束葫督。添加外鍵約束的語(yǔ)法格式:
ALTER TABLE 表名 ADD CONSTRAINT FK_ID FOREIGN KEY(外鍵字段名) REFERENCES 主表表名(主鍵字段名);
被引用的表為主表,引用外鍵的表為從表阿宅。主表和從表是主從關(guān)系候衍。
為表添加外鍵時(shí),需要注意:1.建立外鍵的表必須是InnoDB型洒放,不能是臨時(shí)表蛉鹿。只有InnoDB類(lèi)型的表才支持外鍵。2.定義外鍵時(shí)不能加引號(hào)往湿。
2.添加外鍵約束的參數(shù)說(shuō)名:
當(dāng)主表被刪除后從表的數(shù)據(jù)也應(yīng)該刪除妖异,才能保證數(shù)據(jù)庫(kù)中不會(huì)存在無(wú)意義的垃圾。所以在MySQL中可以在建立外鍵時(shí)添加“ON DELETE”或“ON UPDATE”子句來(lái)告訴數(shù)據(jù)庫(kù)棕孙,怎樣避免垃圾數(shù)據(jù)的產(chǎn)生源葫。其語(yǔ)法格式如下:
ALTER TABLE 表名 ADD CONSTRAINT FK_ID FOREIGN KEY(外鍵字段名) REFERENCES 主表表名(主鍵字段名);
[ ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT } ]
[ ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT } ]
添加外鍵約束的參數(shù)說(shuō)明:
3.刪除外鍵:
在需要解除兩個(gè)表之間的關(guān)聯(lián)關(guān)系時(shí)浦马,就要?jiǎng)h除外鍵約束小泉。其語(yǔ)法格式如下:
ALTER TABLE 表名 DROP FOREING KEY 外鍵名;