外碼是 mysql 中的數據完整性約束,通過引用主表主鍵列確保子表數據與主表一致。外碼工作原理如下:確保子表引用的主表數據存在。級聯刪除:主表記錄刪除時,級聯刪除子表相關記錄。級聯更新:主表主鍵更新時,級聯更新子表相關記錄。
什么是 MySQL 中的外碼?
外碼(Foreign Key)是 MySQL 中的一種數據完整性約束,用于確保不同表之間的行具有有效且一致的關系。它通過引用另一個表(主表)中的主鍵列來實現。
外碼如何工作?
當在子表中創建外碼時,它會引用主表中的主鍵列。當向子表中插入一條記錄時,外碼列的值必須匹配主表中現有的主鍵值。
完整性:外碼約束可確保子表中引用的數據始終在主表中存在。
級聯刪除:當主表中的記錄被刪除時,可以級聯刪除子表中所有相關記錄,從而保持表之間的關系完整性。
級聯更新:當主表中的主鍵值更新時,可以級聯更新子表中所有相關記錄,從而保持一致性。
創建外碼
使用以下語法創建外碼:
<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, 產品名稱 VARCHAR(255), 數量 INT, FOREIGN KEY (order_id) REFERENCES 訂單(id) );</code>
登錄后復制
當向 訂單明細
表插入記錄時,order_id
必須對應于 訂單
表中的現有 id
值。這確保了訂單明細始終與有效的訂單關聯。