目錄
01. 外來鍵的注意事項
02. 新增外來鍵並指定一個名稱
04. 外來鍵約束的參照操作
正文01. 外來鍵的注意事項
只有InnoDB的儲存引擎才支援外來鍵。建立外來鍵的時候,子表的外來鍵必須關聯附表的主鍵子表的外來鍵欄位和主表的主鍵欄位型別要相似;如果是數值型別要求一致,並且無符號也要一致。如果是字元型要求型別一致,長度可以不同。如果外來鍵的欄位沒有建立索引,建立外來鍵後MySQL會自動幫我們新增索引。子表的外來鍵關聯的必須是父表的主鍵。如果要刪除父表,需要先刪除有外來鍵約束的子表。02. 新增外來鍵並指定一個名稱
新增外來鍵// 父表CREATE TABLE tbl_cate(id TINYINT UNSIGNED AUTO_INCREMENT KEY,cateName VARCHAR(50) NOT NULL UNIQUE,cateDesc VARCHAR(100) NOT NULL DEFAULT '')ENGINE=INNODB;// 子表 新增一個名為cateId_fk_tblCate的外來鍵CREATE TABLE tbl_news(id INT UNSIGNED AUTO_INCREMENT KEY,title VARCHAR(100) NOT NULL UNIQUE,content VARCHAR(1000) NOT NULL,cateId TINYINT UNSIGNED NOT NULL,CONSTRAINT cateId_fk_tblCate FOREIGN KEY(cateId) REFERENCES news_cate(id))ENGINE=INNODB;
03. 新增外來鍵_動態新增及刪除外來鍵
動態刪除外來鍵// 格式ALTER TABLE tbl_name DROP FOREIGN KEY fk_name;// 刪除外來鍵ALTER TABLE tbl_newsDROP FOREIGN KEY cateId_fk_tblCate;
動態新增外來鍵,動態新增外來鍵之前,表中的欄位一定要是合法的,沒有髒值。
// 格式ALTER TABLE tbl_name ADD FOREIGN KEY(外來鍵欄位) REFERENCES 主表(主鍵欄位);// 新增外來鍵ALTER TABLE tbl_newsADD FOREIGN KEY(cateId) REFERENCES tbl_cate(id);// 新增外來鍵並指定外來鍵名ALTER TABLE tbl_newsADD CONSTRAINT cateId_fk_tblCate FOREIGN KEY(cateId) REFERENCES tbl_cate(id);
04. 外來鍵約束的參照操作
CASCADE 級聯的操作,從父表刪除或更新,子表也跟著刪除或更新SET NULL 對應的欄位可以設定為null值,從父表進行刪除或者更新記錄,並設定子表的外來鍵列為NULLNO ACTION | RESTRICT 拒絕對父表做更新或刪除操作//指定級聯操作 DELETE CASCADE UPDATE CASCADEALTER TABLE tbl_newsADD FOREIGN KEY(cateId) REFERENCES tbl_cate(id)ON DELETE CASCADE ON UPDATE CASCADE;
寫在最後
本文是在學習MySQL過程中整理的相關筆記,是該系列的第十二篇文章,以上內容純手敲,可能有手誤的地方,也可能有錯誤的地方,希望大家一起指正和見諒。最後,希望與每一個努力的人同行,一起加油!!!