主鍵用于唯一標(biāo)識表中每一行,不允許重復(fù)或?yàn)?null,而外鍵則用于建立表之間的關(guān)系,指向另一表的主鍵,并在主鍵行被刪除時(shí)根據(jù)指定的選項(xiàng)更新或刪除包含外鍵的行。
如何使用 SQL 設(shè)置主鍵和外鍵
主鍵
主鍵是表中唯一標(biāo)識每行的列。
主鍵的值必須是唯一的,并且不能為 null。
每個(gè)表只能有一個(gè)主鍵。
設(shè)置主鍵
可以使用 PRIMARY KEY 約束來設(shè)置主鍵:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
登錄后復(fù)制
例如,在 customers 表中設(shè)置 customer_id 列為主鍵:
ALTER TABLE customers ADD PRIMARY KEY (customer_id);
登錄后復(fù)制
外鍵
外鍵是表中引用另一表主鍵的列。
外鍵的值必須與被引用表的相應(yīng)主鍵值匹配。
外鍵可以用于建立表之間的關(guān)系。
設(shè)置外鍵
可以使用 FOREIGN KEY 約束來設(shè)置外鍵:
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table_name (other_column_name);
登錄后復(fù)制
例如,在 orders 表中設(shè)置 customer_id 列為外鍵,引用 customers 表的 customer_id 主鍵:
ALTER TABLE orders ADD FOREIGN KEY (customer_id) REFERENCES customers (customer_id);
登錄后復(fù)制
外鍵約束選項(xiàng)
ON DELETE CASCADE:當(dāng)被引用表中的主鍵行被刪除時(shí),也會(huì)刪除包含外鍵行的所有行。
ON DELETE SET NULL:當(dāng)被引用表中的主鍵行被刪除時(shí),包含外鍵的行的外鍵值將被設(shè)置為 null。
ON DELETE RESTRICT:如果外鍵值與被引用表中已存在的行不匹配,則無法刪除被引用表中的主鍵行。