MySQL为表添加外键约束
為表添加外鍵約束的語法
Alter table 表名 add constraint FK_ID foreign key(外鍵字段名) REFERENCES 外表表名(主鍵字段名);
為表student添加外鍵約束
執(zhí)行成功后,使用DESC來查看學(xué)生表和班級表
可以看出,grade表中的id是主鍵,student表中的gid是外鍵
使用show create table,查看表的詳細(xì)結(jié)構(gòu)
可以看出,gid為student表的外鍵,并且,gid依賴于grade表中的id主鍵。
為表添加外鍵約束時(shí),需要注意
1、建立外鍵的表,必須為InnoDB型,不能使臨時(shí)表,因?yàn)?#xff0c;在MySQL中只有InnoDB類型的表,才支持外鍵。
2、定義外鍵名時(shí),不能加引號,比如constraint’FK_ID’或constraint”FK_ID”都是錯誤的
添加外鍵約束的參數(shù)說明
建立外鍵,是為了保證數(shù)據(jù)的完整和統(tǒng)一性,如果,主表中的數(shù)據(jù)被刪除或修改,那么,從表中對應(yīng)的數(shù)據(jù)也應(yīng)該被刪除,否則,數(shù)據(jù)庫會存在很多無意義的垃圾數(shù)據(jù)。
MySQL可以在建立外鍵時(shí),添加ON DELETE或ON UPDATE子句,來告訴數(shù)據(jù)庫,怎樣避免垃圾數(shù)據(jù)的產(chǎn)生
語法格式
alter table 表名 add constraint FK_ID foreign key(外鍵字段名) REFERENCES 外表表名(主鍵字段名);
參數(shù)說明
CASCADE——刪除包含與已刪除鍵值,有參照關(guān)系的所有記錄
SET NULL——修改包含與已刪除鍵值,有參照關(guān)系的所有記錄,使用NULL值替換,不能用于已標(biāo)記為NOT NULL的字段
NO ACTION——不進(jìn)行任何操作
RESTRICT——拒絕主表刪除或修改外鍵關(guān)聯(lián)詞,在不定義ON DELETE和ON UPDATE子句時(shí),這是默認(rèn)設(shè)置,也是最安全的的設(shè)置
總結(jié)
以上是生活随笔為你收集整理的MySQL为表添加外键约束的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL外键
- 下一篇: MySQL删除外键约束