国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中的外鍵有啥用

2024-07-24 12:33:30
字體:
來源:轉載
供稿:網友
  外鍵是相對主鍵而來的。
 
  主鍵(primary key) 能夠唯一標識表中某一行的屬性或屬性組。一個表只能有一個主鍵,但可以有多個候選索引。主鍵常常與外鍵構成參照完整性約束,防止出現數據不一致。主鍵可以保證記錄的唯一和主鍵域非空,數據庫管理系統對于主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。
 
  外鍵(foreign key) 是用于建立和加強兩個表數據之間的鏈接的一列或多列。外鍵表示一個表中的一個字段被另一個表中的一個字段引用。外鍵對相關表中的數據造成了限制,使MySQL能夠保持參照完整性。
 
  外鍵約束主要用來維護兩個表之間數據的一致性。簡言之,表的外鍵就是另一表的主鍵,外鍵將兩表聯系起來。一般情況下,要刪除一張表中的主鍵必須首先要確保其它表中的沒有相同外鍵(即該表中的主鍵沒有一個外鍵和它相關聯)。
 
  定義外鍵時,需要遵守下列規則:
 
  主表必須已經存在于數據庫中,或者是當前正在創建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。
  必須為主表定義主鍵。
  主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
  在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
  外鍵中列的數目必須和主表的主鍵中列的數目相同。
  外鍵中列的數據類型必須和主表主鍵中對應列的數據類型相同。
 
  下面我們來更詳細的查看上面語法:
 
  CONSTRAINT子句允許您為外鍵約束定義約束名稱。如果省略它,MySQL將自動生成一個名稱。
  FOREIGN KEY子句指定子表中引用父表中主鍵列的列。您可以在FOREIGN KEY子句后放置一個外鍵名稱,或者讓MySQL為您創建一個名稱。 請注意,MySQL會自動創建一個具有foreign_key_name名稱的索引。
  REFERENCES子句指定父表及其子表中列的引用。 在FOREIGN KEY和REFERENCES中指定的子表和父表中的列數必須相同。
  ON DELETE子句允許定義當父表中的記錄被刪除時,子表的記錄怎樣執行操作。如果省略ON DELETE子句并刪除父表中的記錄,則MySQL將拒絕刪除子表中相關聯的數據。此外,MySQL還提供了一些操作,以便您可以使用其他選項,例如ON DELETE CASCADE,當刪除父表中的記錄時,MySQL可以刪除子表中引用父表中記錄的記錄。 如果您不希望刪除子表中的相關記錄,請改用ON DELETE SET NULL操作。當父表中的記錄被刪除時,MySQL會將子表中的外鍵列值設置為NULL,條件是子表中的外鍵列必須接受NULL值。 請注意,如果使用ON DELETE NO ACTION或ON DELETE RESTRICT操作,MySQL將拒絕刪除。
  ON UPDATE子句允許指定在父表中的行更新時,子表中的行會怎樣執行操作。當父表中的行被更新時,可以省略ON UPDATE子句讓MySQL拒絕對子表中的行的任何更新。 ON UPDATE CASCADE操作允許您執行交叉表更新,并且當更新父表中的行時,ON UPDATE SET NULL操作會將子表中行中的值重置為NULL值。 ON UPDATE NO ACTION或UPDATE RESTRICT操作拒絕任何更新。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平乡县| 全南县| 禄劝| 龙泉市| 武夷山市| 进贤县| 遂昌县| 额敏县| 海口市| 平度市| 霍邱县| 隆安县| 甘洛县| 湘阴县| 渝北区| 绥阳县| 芜湖市| 中宁县| 桂阳县| 金山区| 景洪市| 青田县| 诏安县| 津市市| 湘潭市| 绵阳市| 赞皇县| 香港| 东源县| 大宁县| 永顺县| 团风县| 崇文区| 密云县| 儋州市| 额尔古纳市| SHOW| 陈巴尔虎旗| 阜南县| 许昌市| 阜南县|