是的,MySQL 中的外键(Foreign Key)可以为空(NULL)。外键是否允许为空取决于外键列的定义方式。
NOT NULL
,则该外键可以为 NULL-- 允许为空的例子
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT, -- 这里没有NOT NULL约束
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- 不允许为空的例子
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL, -- 明确指定NOT NULL
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- 修改列允许NULL
ALTER TABLE orders MODIFY customer_id INT NULL;
-- 修改列不允许NULL
ALTER TABLE orders MODIFY customer_id INT NOT NULL;
总结:MySQL 外键是否可以为空取决于列定义,默认情况下允许为 NULL,但应根据实际业务需求合理设置。