外碼是 mysql 中的數(shù)據(jù)完整性約束,通過引用主表主鍵列確保子表數(shù)據(jù)與主表一致。外碼工作原理如下:確保子表引用的主表數(shù)據(jù)存在。級聯(lián)刪除:主表記錄刪除時,級聯(lián)刪除子表相關(guān)記錄。級聯(lián)更新:主表主鍵更新時,級聯(lián)更新子表相關(guān)記錄。
什么是 MySQL 中的外碼?
外碼(Foreign Key)是 MySQL 中的一種數(shù)據(jù)完整性約束,用于確保不同表之間的行具有有效且一致的關(guān)系。它通過引用另一個表(主表)中的主鍵列來實現(xiàn)。
外碼如何工作?
當在子表中創(chuàng)建外碼時,它會引用主表中的主鍵列。當向子表中插入一條記錄時,外碼列的值必須匹配主表中現(xiàn)有的主鍵值。
完整性:外碼約束可確保子表中引用的數(shù)據(jù)始終在主表中存在。
級聯(lián)刪除:當主表中的記錄被刪除時,可以級聯(lián)刪除子表中所有相關(guān)記錄,從而保持表之間的關(guān)系完整性。
級聯(lián)更新:當主表中的主鍵值更新時,可以級聯(lián)更新子表中所有相關(guān)記錄,從而保持一致性。
創(chuàng)建外碼
使用以下語法創(chuàng)建外碼:
<code class="sql">ALTER TABLE 子表 ADD FOREIGN KEY (外碼列) REFERENCES 主表(主鍵列);</code>
登錄后復制
示例
假設我們有兩個表:訂單和訂單明細。訂單明細表有一個外碼 order_id,它引用 訂單表中的主鍵 id。
<code class="sql">CREATE TABLE 訂單 ( id INT PRIMARY KEY, 客戶名稱 VARCHAR(255) ); CREATE TABLE 訂單明細 ( id INT PRIMARY KEY, order_id INT, 產(chǎn)品名稱 VARCHAR(255), 數(shù)量 INT, FOREIGN KEY (order_id) REFERENCES 訂單(id) );</code>
登錄后復制
當向 訂單明細表插入記錄時,order_id 必須對應于 訂單表中的現(xiàn)有 id 值。這確保了訂單明細始終與有效的訂單關(guān)聯(lián)。






