- 如果一个实体的某个字段指向另一个实体的主键,就称为外键。
- 被指向的实体,称之为主实体(主表),也叫父实体(父表) 。
- 负责指向的实体,称之为从实体(从表) ,也叫子实体 (子表)
注:对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则项写成功,如果不存在则填写失败并报错
方式一:创建数据表的时候设置外键约束
create table class(
id int unsigned primary key auto_increment,
name varchar(10)
);
create table stu(
name varchar(10),
class_id int unsigned,
foreign key(class_id) references class(id));
foreign key(自己的字段) references 主表(主表字段)
方式二:对于已经存在的数据表设置外键约束
alter table 从表名 add foreign key (从表字段) references 主表名(主表字段);
alter table stu add foreign key (class_id) references class(1d);
show create table 表名
--需要先获取外键的束名称,在创建表的语句中找到CONSTRAINT,它后面的就是外键的名称
show create table stu;
-- 获取名称之后就可以根据名称来删除外键约束
alter table 表名 drop foreign key 外键名称;
alter table stu drop foreign key stu_ibfk_1;
注:在实际开发中,很少会使用到外键月湖,会极大的降低表更新的效果