目錄
一 外來鍵概念
二 外來鍵作用
三 實戰
四 說明
五 最佳實踐
六 參考
如果公共關鍵字在乙個表中是主關鍵字,那麼這個公共關鍵字被稱為另乙個表的外來鍵。由此可見,外來鍵表示了兩個表之間的相關聯絡。以另乙個表的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。
在實際操作中,將乙個表的值放入第二個表來表示關聯,所使用的值是第乙個表的主鍵值(在必要時可包括復合主鍵值)。此時,第二個表中儲存這些值的屬性稱為外來鍵(foreign key)。
保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料,約束。使兩張表形成關聯,外來鍵只能引用外表中的列的值或使用空值。
1 建立外來鍵的方式一 : 建立子表同時建立外來鍵
-- 年級表 (id\年級名稱)
create table `grade` (
`gradeid` int(10) not null auto_increment comment '年級id',
`gradename` varchar(50) not null comment '年級名稱',
primary key (`gradeid`)
) engine=innodb default charset=utf8
-- 學生資訊表 (學號,姓名,性別,年級,手機,位址,出生日期,郵箱,身份證號)
create table `student` (
`studentno` int(4) not null comment '學號',
`studentname` varchar(20) not null default '匿名' comment '姓名',
`***` tinyint(1) default '1' comment '性別',
`gradeid` int(10) default null comment '年級',
`phonenum` varchar(50) not null comment '手機',
`address` varchar(255) default null comment '位址',
`borndate` datetime default null comment '生日',
`email` varchar(50) default null comment '郵箱',
`idcard` varchar(18) default null comment '身份證號',
primary key (`studentno`),
key `fk_gradeid` (`gradeid`),
constraint `fk_gradeid` foreign key (`gradeid`) references `grade` (`gradeid`)
) engine=innodb default charset=utf8
2 建立外來鍵方式二 : 建立子表完畢後,修改子表新增外來鍵
alter table `student`
add constraint `fk_gradeid` foreign key (`gradeid`) references `grade` (`gradeid`);
3 刪除外來鍵
操作:刪除 grade 表,發現報錯
注意: 刪除具有主外來鍵關係的表時 , 要先刪子表 , 後刪主表
-- 刪除外來鍵
alter table student drop foreign key fk_gradeid;
-- 發現執行完上面的,索引還在,所以還要刪除索引
-- 注:這個索引是建立外來鍵的時候預設生成的
alter table student drop index fk_gradeid;
以上操作的都是物理外來鍵,資料庫級別的外來鍵,我們不建議使用,避免資料庫過多造成困擾。
資料庫就是單純的表,只用來存資料,只有行(資料)和列(字段)
我們要想使用多表的資料,想使用外來鍵(程式去實現)
1 關於資料庫主鍵和外來鍵
2 外來鍵設計
3 sql中乙個表設定兩個主鍵是將兩個字段聯合起來設定為主鍵,乙個表只能有乙個主鍵
資料庫的主鍵和外來鍵
資料庫主鍵是指表中乙個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。乙個表只能有乙個 primary key 約束,而且 primary key 約束中的列不能接受空值。主鍵具有的特點 唯一性 非空性。思考 主鍵帶來了什麼樣的優點和缺點?外來鍵...
資料庫 主鍵 外來鍵
1 什麼是主鍵 在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵 或主碼 這裡說 欄位集 是因為主鍵可能用乙個字段或者多個欄位來表示。舉例來看 學生表 學號,姓名,性別,專業編號 這裡學號是主鍵,乙個學號id就可以唯一標識乙個學生的資訊。另乙個表 學生選課表 學號,課程號...
資料庫外來鍵主鍵
如果乙個欄位被設定為主鍵,那他一定是唯一的,並且是非空的。如果設定為整型,那麼可以新增為自動遞增的功能 外來鍵,應用於主從表。可以保證當前新增的字段在一定範圍內選擇。比如我有兩張表,乙個表是班級表,乙個表是學生表,我需要知道學生在哪乙個班級以及他的位置,我當然可以在班級表中寫好幾個列,但是顯得臃腫,...