外键约束
用来让两张表的数据之间建立连接, 从而保证数据的一致性和完整性
具有外键的表(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;
删除成功
标签:comment,19,外键,dept,emp,MYSQl,null,id From: https://www.cnblogs.com/HIK4RU44/p/18062274