注意:新增外鍵是給從表格新增(即子表)
父表是主表
在建立表之前:
FOREIGN KEY (子表id) REFERENCES 關聯表名(外主表id)
例如
create table emp( e_id int auto_increment primary key, ename varchar(50) not null, age int, job varchar(20), salary int, entrydate date, managerid int, dept_id int, FOREIGN KEY (dept_id) REFERENCES dept(id) );
在建立表格後新增:
ALTER TABLE 表1 ADD FOREIGN KEY (從表的外鍵) REFERENCES dept(主表的主鍵);
例如: ALTER TABLE emp ADD FOREIGN KEY (dep_id) REFERENCES dept(id);
注意:
主表(dept)存在從表(emp),從表引用了外鍵,不能直接刪除(主表)
DROP TABLE dept; --刪除失敗
在刪除表的時候,如果存在外鍵引用,則必須先刪除從表(也就是把存在相關外鍵約束的表全部刪掉),才能刪除主表。
以上的外鍵都是實體外鍵,屬於資料庫層級的引用,不建議使用,使用這個會造成資料耦合度大增。
主鍵:
是唯一識別一筆記錄,不能有重複的,不允許為空,用來保證資料完整性
外鍵:
是另一表的主鍵, 外鍵可以有重複的, 可以是空值,用來和其他表建立聯繫用的。所以說,如果談到了外鍵,一定是至少牽涉到兩張表。
注意:
1、外鍵欄位在建立的時候就應該與主表的型別完全一致(長度等等),否則創建外鍵會報錯;
2、外鍵表是不能插入主表不存在的資料(該資料指的是與主表主鍵或從表外鍵的資料)。 –例如部門號只有1,2,3,4,從表插入資料時外鍵值為5就會產生錯誤
——>即外鍵表的外鍵約束不能隨意取值3、當修改了主表的資料後,關聯的外鍵表的外鍵約束已經實現了自動修改。
加上constraint和不加法的區別
If constraints are not added, the system will automatically generate names for them, which can be difficult to remember.。加constraint,可以依照自己的意圖為約束取名字。
1.顯現要刪除的外鍵。 show create table 表名;
2.看到限制;
##3.刪除即可。一種重寫方式是: 使用 alter table 指令刪除表中的外鍵約束,語法如下: ALTER TABLE 資料表名 DROP FOREIGN KEY 約束名稱;#
以上是Mysql添加外鍵的方式有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!