下面先创建两张表用来作为实验样例
1.创建dept表
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称'
) comment '部门表';INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办');
2. 创建emp表
create table emp(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID'
) comment '员工表';INSERT INTO emp(id, name, age, job, salary, entrydate, managerid, dept_id) VALUES(1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5), (2, '张无忌', 20, '项目经理', 12500, '2005-12-05',1, 1), (3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),(4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),(5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),(6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1);
当我们去看到dept里面的五个部门,没添加外键之前,我想随意删除一个,就比如研发部,我可以删除。
删除成功。当我们添加外键的时候,执行以下命令添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
里面有5和1,所以5和1是没办法删除的
这个时候你要删除的话,上面会显示无法删除。
要是想取消外键的话,那么就需要执行以下命令
alter table emp drop foreign key fk_emp_dept_id;
这个时候就可以删除里面的数据了,就不会出现上面的错误。
贴一张黑马程序员的截图