MYSQl学习笔记19: 外键约束

外键约束

用来让两张表的数据之间建立连接, 从而保证数据的一致性和完整性

具有外键的表(emp)称为子表

外键关联的表(dept)称为父表


外键约束

创建表时添加

create table 表名(
字段名 数据类型,
[constrain] [外键名称] foreign key(外键字段名) references 主表(主表列名)
);

修改表字段

alter table 表名 add constraint 外键名称 foreign key(外键字段名) reference 主表(主表列名);

创建部门表
create table dept
(
id int auto_increment comment 'ID',
name varchar(50) not null comment '部门名称',
constraint dept_pk
primary key (id)
)    comment '部门表';

插入数据

insert into dept (id,name) values
(1,'研发部'),
(2,'市场部'),
(3,'财务部'),
(4,'销售部'),
(5,'总经办');

创建员工表
create table emp
(
id int auto_increment,
name varchar(50) not null comment '姓名',
age int null comment '年龄',
job varchar(20) null comment '职位',
salary int null comment '薪资',
entryDate date null comment '入职时间',
managerId int null comment '直属领导id',
dept_id int null comment '部门id',
constraint emp_pk
primary key (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,'2005-12-05',2,1);


为emp表添加外键约束

父表为dept,关联字段id

子表为emp,关联字段dept_id

alter table emp add constraint
fk_emp_dept_id
foreign key (dept_id)
references dept (id);
尝试删除dept表id为1的记录,报错

保证了数据的一致性和完整性

delete from dept where id = 1;


删除emp表的外键
alter table emp drop foreign key fk_emp_dept_id;
再次尝试删除dept表id为1的记录
delete from dept where id = 1;

删除成功

posted @   HIK4RU44  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示