外键约束

外键外键约束是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束

被依赖的表我们通常称之为父表或者主表,设置外键约束的表称为字表从表

外键约束:(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的

外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性

外键约束只有表级约束,没有列级约束,当然也可以在创建表以后也能添加外键约束

如:

 

 代码:

-- 先创建父表:班级表
create table t_class(
con int(4) primary key auto_increment,
cname varchar(10) not null,
room char(4)
);

-- 添加班级数据:
insert into t_class values (null,'Java001','r201');
insert into t_class values (null,'Java002','r203');
insert into t_class values (null,'大数据001','r301');

-- 查询班级表
select * from t_class;

运行结果:

 

 

-- 创建子表,学生表    (注意添加外键约束)
create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
classno int(4),   -- 取值参考t_class表中的cno字段,不要求字段名字完全重复,但是类型长度定义,尽量相同

constraint fk_stu_classno foreign key (classno) references t_class(con)           -- 外键约束
);

-- 添加学生信息:
insert into t_student values (null,'张三',1),(null,'李四',1),(null,'王五',2),(null,'赵六',2);

-- 查看学生表
select * from t_student;

 运行结果:

 

 

也可以通过创建表后,添加外键约束,代码:

create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
classno int(4)
);

alter table t_student add constraint fk_stu_classno foreign key (classno) references t_student(con);

 

 

设计外键时,mysql提供了4种外键关联策略

 

外键策略: 1、RESTRICT   限制(默认策略)

                2、CASCADE   级联

                3、NO ACTION   什么也不做

                4、SET NULL   置为NULL

应用场合:1.朋友圈删除,点赞,留言删除    --》级联

               2.解散班级,对应的学生  置为班级为null就可以了  --》set null

 

posted @ 2021-12-14 22:52  努力学爪哇  阅读(1445)  评论(0编辑  收藏  举报