MySQL高階 一 主外來鍵講解

2021-08-16 22:28:20 字數 1394 閱讀 7212

主鍵:是唯一標識一條記錄,不能有重複的,不允許為空,用來保證資料完整性

外來鍵:是另一表的主鍵, 

外來鍵可以有重複的

, 可以是空值,用來和其他表建立聯絡用的。所以說,如果談到了外來鍵,一定是至少涉及到兩張表。

例如下面這兩張表:

上面有兩張表:部門表(dept

)、員工表

(emp)

。id=dept_id

,而dept_id

就是員工表中的外來鍵:因為員工表中的員工需要知道自己屬於哪個部門,就可以通過外來鍵

dept_id

找到對應的部門,然後才能找到部門表裡的各種字段資訊,從而讓二者相關聯。所以說,

外來鍵一定是在從表中建立,從而找到與主表之間的聯絡;從表負責維護二者之間的關係。

1. 兩張表必須都是

innodb

表,並且它們沒有臨時表。

注:innodb

是資料庫的引擎。

mysql

常見引擎有兩種:

innodb

和myisam

,後者不支援外來鍵。

2. 建立外來鍵關係的對應列必須具有相似的

innodb

內部資料型別。

3. 建立外來鍵關係的對應列必須建立了索引。

4. 假如顯式的給出了

constraint symbol

,那symbol

在資料庫中必須是唯一的。假如沒有顯式的給出,

innodb

會自動的建立。

答案:常見的有myisam

和innodb

。myisam:不支援外來鍵約束。不支援事務。對資料大批量匯入時,它會邊插入資料邊建索引,所以為了提高執行效率,應該先禁用索引,在完全匯入後再開啟索引。

innodb:支援外來鍵約束,支援事務。對索引都是單獨處理的,無需引用索引。

constraint symbol:可以給這個外來鍵約束起乙個名字,有了名字,以後找到它就很方便了。如果不加此引數的話,系統會自動分配乙個名字。

foreign key:將從表中的字段

1作為外來鍵的字段。

references:對映到主表的字段2。

on delete後面的四個引數:代表的是當刪除主表的記錄時,所做的約定。

restrict(限制)

:如果你想刪除的那個主表,它的下面有對應從表的記錄,此主表將無法刪除。

cascade(級聯):如果主表的記錄刪掉,則從表中相關聯的記錄都將被刪掉。

set null:將外來鍵設定為空。

no action:什麼都不做。

注:一般是restrict

和cascade

用的最多。

MySQL高階 一 主外來鍵講解

主鍵 是唯一標識一條記錄,不能有重複的,不允許為空,用來保證資料完整性 外來鍵 是另一表的主鍵,外來鍵可以有重複的,可以是空值,用來和其他表建立聯絡用的。所以說,如果談到了外來鍵,一定是至少涉及到兩張表。例如下面這兩張表 上面有兩張表 部門表 dept 員工表 emp id dept id,而dep...

MySQL高階 一 主外來鍵講解

1.什麼是外來鍵 主鍵 是唯一標識一條記錄,不能有重複的,不允許為空,用來保證資料完整性 外來鍵 是另一表的主鍵,外來鍵可以有重複的,可以是空值,用來和其他表建立聯絡用的。所以說,如果談到了外來鍵,一定是至少涉及到兩張表。例如下面這兩張表 上面有兩張表 部門表 dept 員工表 emp id dep...

mysql建立主外來鍵關聯 mysql主外來鍵建立心得

mysql主主外來鍵建立 1 確保參照的表和字段是存在的 2 關聯表必須是innodb儲存型別 3 必須設定主關聯表主鍵 4 主鍵與外來鍵資料型別和字元編碼 unsigned 必須一致 5 確保以上宣告的句法是正確的 附 mysql建立表預設型別為 myisam 如果要改變預設表型別可在my.inf...