Mysql级联操作,添加外键和删除外键

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 ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值