在创建表时使用 FOREIGN KEY:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
customer_id INT,
FOREIGN KEY (product_id) REFERENCES products(product_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
在这个例子中,orders 表包含两个外键:product_id 参考自 products 表的 product_id 主键,customer_id 参考自 customers 表的 customer_id 主键。这表示 orders 表中的每个订单必须与 products 表中的产品和 customers 表中的客户相关联。
在修改表时添加 FOREIGN KEY 约束:
-- 在已有的表中添加 FOREIGN KEY 约束
ALTER TABLE orders
ADD CONSTRAINT fk_product FOREIGN KEY (product_id) REFERENCES products(product_id);
这里使用 ALTER TABLE 语句为已有的表 orders 添加 FOREIGN KEY 约束。
外键约束的删除和更新操作:
当使用 FOREIGN KEY 约束时,还可以定义删除和更新关联行的操作。这些操作在父表(被引用表)的主键发生变化时,如何处理子表(包含外键的表)中的对应行。
-- 示例:在创建表时定义外键约束及相关操作
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
customer_id INT,
FOREIGN KEY (product_id) REFERENCES products(product_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
在这个例子中:
- ON DELETE CASCADE 意味着如果 products 表中的某个产品被删除,与之相关的所有订单也将被删除。
- ON DELETE SET NULL 表示如果 customers 表中的某个客户被删除,与之相关的订单中的 customer_id 将被设置为 NULL。
- ON UPDATE CASCADE 表示如果父表中的主键值发生变化,子表中的外键值也会相应地发生变化。
FOREIGN KEY 约束帮助确保数据的完整性,并促使表之间的关系得到维护。
转载请注明出处:http://www.zyzy.cn/article/detail/3346/SQL