mysql外來鍵教程 MySQL外來鍵使用詳解

2021-10-18 22:11:21 字數 1204 閱讀 2794

最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存·所以要維護表間的關聯··研究了一下mysql的外來鍵 。

(1)只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束

(2)外來鍵的好處:可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作;

(3)外來鍵的作用:

保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料 。 使兩張表形成關聯,外來鍵只能引用外表中的列的值!

(4)建立外來鍵的前提:

兩個表必須是innodb表型別 。

使用在外鍵關係的域必須為索引型(index) 。

使用在外鍵關係的域必須與資料型別相似

(5)建立的步驟

指定主鍵關鍵字: foreign key(列名)

引用外來鍵關鍵字: references (外來鍵列名)

(6)事件觸發限制:on delete和on update , 可設引數cascade(跟隨外來鍵改動), restrict(限制外表中的外來鍵改動),set null(設空值),set default(設預設值),[預設]no action

(7)舉例

outtable表 主鍵 id 型別 int

建立含有外來鍵的表:

複製** **如下:

create table temp(

id int,

name char(20),

foreign key(id) references outtable(id) on delete cascade on update cascade);

說明:把id列 設為外來鍵 參照外表outtable的id列 當外來鍵的值刪除 本表中對應的列篩除 當外來鍵的值改變 本表中對應的列值改變 。

複製** **如下:

create table temp( id int, name char(20), foreign key(id) references outtable(id) on delete cascade on update cascade);

缺點:在對mysql做優化的時候類似查詢快取,索引快取之類的優化對innodb型別的表是不起作用的,還有在資料庫整體架構中用得同步複製也是對innodb型別的表不生效的,像資料庫中核心的表類似商品表請大家盡量不要是使用外來鍵,如果同步肯定要同步商品庫的,加上了外來鍵也就沒法通不了,優化也對它沒作用,豈不得不償失,做外來鍵的目的在於保證資料完整性,請大家通過程式來實現這個目的而不是外來鍵,切記!

mysql 外來鍵 del 記錄 MySQL 外來鍵

在mysql中 1 mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction...

mysql建立外來鍵案例 MySQL外來鍵例項

外來鍵例項 性別表create table gender gid int auto increment primary key not null,gender char 10 insert into gender gender values male female unknown 乙個表只能有乙個主...

mysql外來鍵的應用 MySQL外來鍵應用

mysql外來鍵應用,所有tables必須是innodb型,它們不能是臨時表.因為在mysql中只有innodb型別的表才支援外來鍵.mysql版本 5.5.28 系統平台 rhel 5.8 32位 1 外來鍵的使用 外來鍵的作用,主要有兩個 乙個是讓資料庫自己通過外來鍵來保證資料的完整性和一致性 ...