【lesson12】表的约束(5)

2023-12-13 04:01:23

表的约束的介绍

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。

外键约束

外键用于定义主表和从表之间的关系外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
在这里插入图片描述

测试

建表

学生信息表
在这里插入图片描述
班级信息表
在这里插入图片描述

插入测试

插入班级的id和名字
在这里插入图片描述
插入学生信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是这里会发现一个问题我们的班级信息表里面并没有id为3的班级,所以添加班级信息的规则不符合逻辑
在这里插入图片描述
这里我们删除了通信101但是这是又有一个问题,通信101班级里面还有学生啊。这怎么可以删除,只有空班级才可以删除。
在这里插入图片描述
在这里插入图片描述
所以删除班级的规则也不符合逻辑

这里 class2为主表,stus为从表,class_id有外键之名(有关联),但是无外键之实(无约束)。
所以要添加外键约束

建表

重新建立有外键约束的表
在这里插入图片描述

插入测试

先查看主表和从表
在这里插入图片描述
从表 插入数据
在这里插入图片描述
我们看到了插入受到了约束,因为班级表里面没有id为3的班级,所以从表插入是也不允许有id为3的班级。
现在我们班级里面还有学生我们还能删除班级吗?
在这里插入图片描述
我们会发现不允许删除了。
如果班级里面没有学生我们可以删除吗?
在这里插入图片描述
在这里插入图片描述
我们会发现空人数的班级是可以删除的

外键作用:
1.主表和从表的关联关系
2.产生外键约束

理解外键约束

首先我们承认,这个世界是数据很多都是相关性的。

理论上,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。

此时,在实际使用的时候,可能会出现什么问题?
有没有可能插入的学生信息中有具体的班级,但是该班级却没有在班级表中?

比如学校只开了通信100班,通信101班,但是在上课的学生里面竟然有通信102班的学生(这个班目前并不存在),这很明显是有问题的。

因为此时两张表在业务上是有相关性的,但是在业务上没有建立约束关系,那么就可能出现问题。

解决方案就是通过外键完成的。建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

文章来源:https://blog.csdn.net/m0_67077469/article/details/134959238
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。