级联操作
级联操作 CASCADE
当修改或者删除主表的数据,从表随之变化;
有了外键的关联:员工表emp的dept_id关联与dept表的id
修改和删除比较麻烦,需要操作从表,在操作主表!
创建员工表
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 -- 级联删除
) ;
INSERT INTO emp(NAME,gender,dept_id) VALUES('高圆圆','女',2),
('文章','男',1),('王宝强','男',1),('张佳宁','女',2);
INSERT INTO emp(NAME,gender,dept_id) VALUES('赵又廷','男',4);
修改主表的数据,1号部门—3号部门 (级联修改)
UPDATE dept SET id = 3 WHERE id = 1;
删除主表的数据,从表数据随之删除…(级联删除)
DELETE FROM dept WHERE id = 2 ;
sql添加和删除外键
sql删除外键 alter table 表名 drop FOREIGN KEY 外键名称;
ALTER TABLE emp DROP FOREIGN KEY dept_emp_fk;
通过sql添加外键
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 ;
INSERT INTO emp(NAME,gender,dept_id) VALUES('张三','男',3) ;
查询部门表和员工表的所有数据
SELECT * FROM emp;
SELECT * FROM dept ;