在MySQL中,主键(Primary Key)和外键(Foreign Key)是关系型数据库设计中的基本概念,用于确保数据的引用完整性和一致性。下面我将详细介绍这两个概念及其关联语句。
主键(Primary Key):
外键(Foreign Key):
假设我们有两个表:orders
和 customers
。orders
表中的 customer_id
字段是外键,它引用了 customers
表中的 id
字段(主键)。
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
在这个例子中,orders
表的 customer_id
字段被定义为外键,它引用了 customers
表的 id
字段。
如果表已经存在,可以使用 ALTER TABLE
语句来添加外键:
ALTER TABLE orders
ADD FOREIGN KEY (customer_id) REFERENCES customers(id);
优势:
应用场景:
问题1:外键约束冲突
INSERT INTO orders (customer_id, order_date) VALUES (1, '2023-10-01');
-- 如果 customer_id=1 在 customers 表中不存在,会报错
问题2:删除参照表中的主键记录
ON DELETE
选项。ALTER TABLE orders
DROP FOREIGN KEY fk_customer_id,
ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE;
在这个例子中,设置 ON DELETE CASCADE
后,删除 customers
表中的记录时,会自动删除所有引用该记录的 orders
表中的记录。
希望这些信息对你有所帮助!如果有更多问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云