在MySQL中,外鍵指的是一個或多個表中存在的一個字段或一組字段,它們的值必須與另外一個表中的一個字段或一組字段的值相匹配。
外鍵有多重意思,以下就幾個常用的意思進行介紹:
CREATE TABLE countries (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE cities (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
country_id INT NOT NULL,
FOREIGN KEY (country_id) REFERENCES countries(id)
);
第一個意思是用外鍵建立表之間的關系。這通常是將多個表中的數據聯系起來的一種方式。例如,假設我們有一個“國家”表和一個“城市”表,城市表有一個“country_id”字段,它指向“country”表中的“id”字段。通過在城市表中添加一個FOREIGN KEY約束,我們就可以確保每個城市都屬于一個現有的國家。
第二個意思是使用外鍵進行引用完整性檢查。當我們向“cities”表中添加新行時,MySQL會強制我們確?!癱ountry_id”值對應于“countries”表中現有的行。如果我們嘗試向cities表中添加一個country_id值為100的新行,而countries表中沒有ID為100的行,MySQL會拋出錯誤。
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE
);
第三個意思是在外鍵上定義操作,例如對于DELETE CASCADE,在刪除“customers”表中的某一行時,MySQL會自動刪除“orders”表中對應的所有行。這種類型的操作確保了當父表上進行的操作會自動反映在子表上,使我們的數據庫更加靈活和高效。