在SQL中,添加外键列可以通过两种方式实现:在创建表时添加,或者在已有表上修改添加。以下是详细的操作方法:
CREATE TABLE 子表名 (
列1 数据类型,
列2 数据类型,
...
外键列名 数据类型,
FOREIGN KEY (外键列名) REFERENCES 主表名(主键列名)
[ON DELETE 引用操作] [ON UPDATE 引用操作]
);
示例:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE CASCADE
);
-- 添加列
ALTER TABLE 子表名 ADD COLUMN 外键列名 数据类型;
-- 添加外键约束
ALTER TABLE 子表名
ADD CONSTRAINT 约束名称
FOREIGN KEY (外键列名) REFERENCES 主表名(主键列名)
[ON DELETE 引用操作] [ON UPDATE 引用操作];
示例:
ALTER TABLE orders ADD COLUMN customer_id INT;
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
ON DELETE SET NULL;
ALTER TABLE 子表名
ADD COLUMN 外键列名 数据类型,
ADD CONSTRAINT 约束名称
FOREIGN KEY (外键列名) REFERENCES 主表名(主键列名)
[ON DELETE 引用操作] [ON UPDATE 引用操作];
示例:
ALTER TABLE orders
ADD COLUMN customer_id INT,
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);
在定义外键时,可以指定当主表中的记录被更新或删除时的操作:
ON DELETE CASCADE
:主表记录删除时,自动删除子表中的相关记录ON DELETE SET NULL
:主表记录删除时,将子表中的外键设为NULLON DELETE SET DEFAULT
:主表记录删除时,将子表中的外键设为默认值ON DELETE NO ACTION
/ON DELETE RESTRICT
:阻止删除主表中有子表引用的记录ON UPDATE
也有类似的选项ADD CONSTRAINT
语法