MySQL是一種非常流行的關系型數據庫管理系統。它提供了許多強大的功能,其中之一就是外鍵約束。外鍵是將兩個表之間的關系聯系起來的一種方式。如果一個表中的某個列是另一個表的主鍵,那么這個列就可以通過外鍵約束與另一個表的主鍵建立關系。
外鍵可以用來實現一些很有用的功能。例如,在一個訂單管理系統中,訂單和用戶之間的關系是非常重要的。如果一個訂單與一個不存在的用戶關聯起來,那么這個訂單就沒有任何意義。通過使用外鍵約束,我們可以確保訂單和用戶之間的數據始終是連貫的。
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, product VARCHAR(50), FOREIGN KEY (user_id) REFERENCES users(id) );
如上所示,orders表中的user_id列通過FOREIGN KEY(外鍵)約束關聯到了users表的id列,這就建立了兩個表之間的聯系。
需要注意的是,外鍵只能連接到主鍵上。所以,在上面的例子中,user_id只能連接到users表的id列上。如果嘗試連接到users表的name列上,就會出現錯誤。
CREATE TABLE orders ( id INT PRIMARY KEY, user_name VARCHAR(50), product VARCHAR(50), FOREIGN KEY (user_name) REFERENCES users(name) );
如上所示,orders表中的user_name列通過FOREIGN KEY(外鍵)約束關聯到了users表的name列,但這是不正確的。如果對此進行設置,MySQL將會自動生成以下錯誤信息:
ERROR 1005 (HY000): Can't create table 'test.orders' (errno: 150)
因此,如果想要使用外鍵約束來建立兩個表之間的聯系,就需要確保外鍵連接到的字段是主鍵。