1.级联操作CASCADE
1.级联删除
语法 on delete cascade 书写的位置:创建表的字段后边
2.级联修改
语法 on update cascade 书写的位置:创建表的字段后边
代码:
-- 创建主表 部门表
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
);
INSERT INTO dept (NAME) VALUES('销售部'),('生产部'),('经理部');
-- 创建从表 员工表
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT, -- 员工编号
NAME VARCHAR(10), -- 员工姓名
gender VARCHAR(3), -- 员工性别
dept_id INT, -- 员工的部门id
CONSTRAINT -- 声明
dept_emp_fk -- 外键名称
FOREIGN KEY -- 外键作用在
(dept_id) -- 从表的dept_id字段
REFERENCES -- 关联
dept(id) -- 主表的主键id
ON UPDATE CASCADE -- 级联修改
ON DELETE CASCADE -- 级联删除
) ;
-- 此时:删除或者修改主表的内容,从表也会跟着改变
-- 例如: 修改主表的数据,1号部门---3号部门 (级联修改)
UPDATE dept SET id = 3 WHERE id = 1; #将id从1改为3
#从表的所有id为1的变成了3
-- 删除主表的数据,从表数据随之删除...(级联删除)
DELETE FROM dept WHERE id = 2 ;#删除主表id=2
#从表的所有id为2的员工被删除了
2.删除外键,和添加外键
删除外键
语法:
-- sql删除外键 alter table 表名 drop FOREIGN KEY 外键名称;
#代码
ALTER TABLE emp DROP FOREIGN KEY dept_emp_fk;
添加外键
语法:
-- alter table 表名 add
-- constraint 外键名称 foreign key (从表的某个id)
-- references 主表(主表id)
-- 级联修改
-- 级联删除
#代码
ALTER TABLE emp
ADD CONSTRAINT dept_emp_fk FOREIGN KEY (dept_id)
REFERENCES dept(id)
ON UPDATE CASCADE
ON DELETE CASCADE ;