MySQL外键约束/级联删除和更新

外键约束:
什么是外键约束:一张表中的某个字段引用另一个表的主键
主表: 约束别人
副表/从表: 使用别人的数据,被别人约束

-- 创建部门表
CREATE TABLE department (
	id INT PRIMARY KEY AUTO_INCREMENT,--  主键自增
	dep_name VARCHAR(20),
	dep_location VARCHAR(20)
);

-- 添加2个部门
INSERT INTO department (dep_name, dep_location) VALUES ('研发部', '广州'), ('销售部', '深圳');

-- 创建员工表,添加外键约束
CREATE TABLE employee (
	id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增
	NAME VARCHAR(20),
	age INT,
	dep_id INT,--  外键
	-- 添加一个外键
	-- 外键取名公司要求,一般fk结尾
	CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id)
);-- emp_depid_ref_dep_id_fk 外键的取名方式,外键约束方式

-- 正常添加数据
INSERT INTO employee (NAME, age, dep_id) VALUES
('张三', 20, 1),
('李四', 21, 1),
('王五', 20, 1),
('老王', 20, 2),
('大王', 22, 2),
('小王', 18, 2);

-- 删除外键
-- 删除employee表的emp_depid_ref_dep_id_fk外键

ALTER TABLE employee DROP FOREIGN KEY emp_depid_ref_dep_id_fk;

-- 在employee表存在下添加外键
ALTER TABLE employee ADD CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id);

在这里插入图片描述

数据操作注意事项:
1.添加数据时:先添加主表中的数据,再添加从表中的数据
2.删除数据时:先删从表中的数据,再删主表中的数据
3.修改数据时:如果主表中的主键被从表引用了,不能修改此主键的值

级联删除和更新
级联:一个表改变,另一个表也跟着改变;

#外键的级联(扩展)
CREATE TABLE department (
	id INT PRIMARY KEY AUTO_INCREMENT,
	dep_name VARCHAR(20),
	dep_location VARCHAR(20)
);

CREATE TABLE employee (
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	age INT,
	dep_id INT,
	CONSTRAINT fk_002 foreign key (dep_id) references department(id)-- 这里添加外键约束,关联主表主键:department(id)
	on update cascade  -- 字段支持 级联更新
 	on delete cascade
);

-- 正常添加数据
INSERT INTO employee (NAME, age, dep_id) VALUES
('张三', 20, 1),
('李四', 21, 1),
('王五', 20, 1),
('老王', 20, 2),
('大王', 22, 2),
('小王', 18, 2);

update department set id = 3 where id = 2;
delete from department where id = 1;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值