首頁  >  文章  >  資料庫  >  MySQL進階(一)主外鍵講解

MySQL進階(一)主外鍵講解

黄舟
黄舟原創
2017-02-09 15:10:151100瀏覽

1.什麼是外鍵:

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

      外鍵:是另一表的主鍵, 外鍵可以有重複的, 可以是空值,用來和其他表格建立聯繫用的。所以說,如果談到了外鍵,一定是至少牽涉到兩張表。例如下面這兩張表:

MySQL進階(一)主外鍵講解

上面有兩張表:部門表(dept)、員工表(emp)。 Id=Dept_id,而Dept_id就是員工表中的外鍵:因為員工表中的員工需要知道自己屬於哪個部門,就可以透過外鍵Dept_id找到對應的部門,然後才能找到部門表裡的各種欄位訊息,從而讓二者相關聯。所以說,外鍵一定是在從表中創建,從而找到與主表之間的聯繫;從表負責維護二者之間的關係。

2.外鍵的使用需要滿足下列的條件:(這裡涉及了InnoDB的概念)

     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進階(一)主外鍵講解


以上就是 MySQL進階(一)主外鍵講解的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn