粉丝558获赞2612

继续了,咱们继续看,还有在约束当中啊,还有一个最后一个约束啊,就是外线约束 啊,外界约束。那首先第一个呢,就是关于外界约束的相关什么呀?术语啊,这个呢,我们得说一声啊,外界自断、 外见约束、外见值、外见值,外见约束,万见不断,万见值还是这几个概念,各位外见约束是谁啊? foreign, key, foreign 啊, foreign 那是什么意思啊?外国人啊。 foreign 是就是外外的意思,是吧? 外外,外国人的外界啊,约束添加有外界约束的自断, 对吧?就是外界自断中的什么每一个值啊,就是外界值,那什么是外界约束?有什么用? 这是大家主要要学的,对吧?就是外交约束,他是个什么东西?我们可以给大家举一个案例啊,举一个背景, 我们可以来个右背景,请设计数据库表,用来维护 学生和班级的信息。怎么做? 我们可以先提个有一个业务背景啊,就是请设计数据汇表,用来维护学生和班级的信息,学生班级的信息给你维护起来, 我们可以采用第一种方案啊,我们一种一种说第一种方案就是一张表呗,存储所有数据,是不是?哎,你比如说学生有什么呀?编号, 学生有编号啊,学生有名字,学生有班级,编号有班级,什么名字对吧?哎,比如说我这里呢,就这样写的,一号学生张三, 对吧?那可能就是比如说这个,这个这个,这,这张表得有主见吧?得有主见,是不是?然后呢?再往下的班级编号的话,就比如说这个,这个是幺幺零啊,或者幺幺零零或幺零幺吧,然后这个是就这么写的啊,叫北京什么呀?大兴, 北京大兴区一庄经济技术开发区, 然后北京大县这一技术开发区一庄二中 啊,高三一般 再拿过来,那信息可能就是这样 啊,三四五啊,张三一二三四五 啊,那这个是幺零二二二,那这块呢?是二班,二班,二班。妥了,这种方案行不行?行,有没有缺点?有,哎,太好了,俩字啊,鲈鱼, 对吧?大家看这个数据是不是大量的重复啊?哎,重复荣誉啊,第二种方案就是第一种方案,说了半天就是这种方式,不,不推荐啊,不推荐啊,有荣誉。第二种方案是两张表啊, 对吧?哎,什么表?班级表和学生表, 那我们就把这个表呢,我们设计一下,比如说这是一个什么呀? class 叫 class, 总感觉跟家暴中的 class 有点冲啊,这是什么班级表?是不是好 student? 就学生表呗,班级表这块的话有班级的一个编号吧,班级编号呗,班级的一个什么名字,对吧?哎,班级名字,班级编号是幺零幺和幺零二,幺零幺是他, 幺零二呢,是他,能看明白吗?这张表是班级表,学生表的话,那就 就是学生有学生编号,学生有学生的什么名字,对吧?然后接下来呢,我们把这个表呢,哎,一号学生,二号,三号,四号学生,五号学生就给他拿过来,一号学生,我们是张三一,然后呢把这个拿过来啊, 好,大家看,这样的话是不是就相当于我们这张表,班子表和学生表的信息是不是有了? 但是呢,人家上面啊,能看出来这个张三一啊,他属于这个班的,但下边看不出来。张三一是属于哪个班的,看不出来,对吧? 注意听了啊,两句话就讲,讲完了,两句话就讲完了,外界就关键在这个位置上啊。咱咱咱,咱,不懂,到关键就没听着是吧?外界有很多成员就在大学里边学外界学词的多的是 啊,不知道外建是啥。对,你就搞蒙了,一个外建,干蒙之后,天天后面都是表关联,表关联,表关联,全是外建,全是外建。你一一看见外建就头疼,为啥没弄懂, 不就不就是这点事吗?主见很好学,外见这个东西,你还是得考虑想一下子,这是什么东西?这是这张表的主见,对吧?这个是不是这张表的主见?好,各位, 那现在呢?我们现在没有关系,在这个位置上,我们是不是需要加一个自断?我们叫 c number, 这个我们就可以作为加。添加什么?该字段添加外界约束。 a, okay, 如果你这个字段不加外界约束,将来在这个位置你就可以随便写, 听懂了吗? 如果你加了这个外建约束,外建约束加上去,表示可以指定你这个外建字段引用哪个字段。假如说你指定这个字段引用了这个字段,那么将来这个字段当中出现的这个值必须是这个字段下的值, 你要写别的报错,这就是外界的作用。我再说一下啊,如果这个字段上不加外界约束,就 表示你这个字段上可以随便写,你愿意写什么写什么。 如果加上外界约束,就表示说你这个字段里边值不能随便写了,你这个外界里面的值必须来自于某一个字段。 明白,幺零幺幺零幺幺零二幺零二幺零二。没事,这就是我所说的第二种方案, 我们可以写一下啊,将以上表的鉴表语句 写出来。怎么写?各位注意, 如果我学生表以其中有一个字段去引用你这张表的某个字段,我们称这张表叫副表,称这张表叫子表。父子关系 先对话写上啊。 t student 中的什么 c number 阶段引用谁? 或者这叫 class number 吧,这个阶段啊,叫 class, 在 class number 阶段引用谁啊?引用 t 下将 class 表中的什么 cnamer 自断,此时 tease 丢的呢?表表 叫做子表,注意啊,叫子表。 t class 表叫做副表。 好,需要注意的时候说,注意的什么呢?在删表的时候,我们先删哪个? 能不能先删这张表?你这张表的这个字段还在用着你这张表的这个字段, 先删子,再删富,插入数据的时候,或者是创建表的时候,应该先创建哪一张表?副表 再创建子表,听懂了吗?这个你不用记,你理解呀,我用着你呢,你不能随便删吧, 要删也是先删我再删,你就是这意思吗?是不是创的时候,创建的时候,那必须得先有父亲后有子, 因为我这块的用着这块的东西,你不得先把这张表创建出来吗?插入数据也得先插入,谁 也得先往副表里边插入数据,子表才能插入,因为我这个字段用着这个子段呢,听懂了吗?这块你得搞明白啊,有副子表的,你不能随便来啊,不能随便来,来删除数据的时候 先删除什么?先删除此表,再删除副表。添加数据的时候 先添加副表,再添加子表。创建表的时候啊,先创建什么呀?副表再创建什么子表? 删除表的时候先删除子表,再删除副表。 有操作顺序,顺序要求, 父子表有这么一个概念在里边, 那接下来我就把这两张表创建一下,我把数据给它维护进去,行吗?怎么做?大家一起来看看这个锁口该怎么写? drop table 衣服吧。哪张表存在给它删掉, 先写哪个? 先扇子再扇腹吧。是不是扇满了,扇完之后撞 先创谁先创富?富这块有什么呢?有 cn number 和 cn namec number, int primary t 五字灯啊, say name 也可以在这写啊, primary key 谁啊谁?那么 再创子吧。 correct taboo 谁 t east 丢掉的这张表,这是子,他的子怎么写啊? 子的话有 s number, s name 和 class number。 来,你看 s numbers name 和 plus number, s number 是 inter s name is water class number 是不是他?注意听啊,写了啊, foreign k 谁? class number references t class c number, 这就是外界约束,这么加 固定写法哪能变他?他和他 就是说我这张表的外见是谁?他,我这个外见字段。引用这个单词的意思是什么意思?引用, 引用你这张表是不是这张表中的哪个字段?看 你得会写。各位啊,你不能说你光用这个啊,你光用这个工具,你会注意你啊,得会写这个代码, 先扇子,再扇父,先创富再创子。子表中有一个字段叫克拉斯 number, 在引用你副表当中的 cnamer 这个字段,这个字段是主见,我这个字段是外见,外见引用的是他, 就相当于你这个字段里面东西不能随便写啦,他是一个 fk, 引用他好了。那这一块呢?我们插入数据,各位先插负还是插子? 副表是吧?银丝二十一图哪张表啊? t 什么 plus 这张表,然后 yes, 直接啊,比如这个班机编号是幺零幺 是吧?幺零幺班级是幺零二,我们是不是再给一个班级啊?幺零二, 这是一个班级,这是一个班级。下边有个子表吧,踢什么丢凳子。 那这块呢?有一二三四五对吧?好,那么先来这写一张三一幺零幺对不对?来, 还有一张表叫 是吧?哎,把这个我们拿过来可以吧?哎,放到哪了?这行不行? school 能看懂吗?嗯,点右键关了,他打开那个窗口怎么样?扫啊?扫,拖过来。 好,大家看这个数据是不是就有了?这是一个 班级吗?这是学生啊。那你现在尝试插入数据的时候插入幺零三,你试试 七李四把幺零三,这个幺零三是不是在上面根本就不存在,所以拿过来走一个,报错了,大家看这个错误信息能不能看懂?看不懂,怎么能看不懂呢?以你的英语水平 出边上幺四五二不能够爱的,或者是阿不对的一个子,他说孩子呀,你说这叫孩子吧,一个子记录吧,不能添加或者是更新一个子记录,这个孩子加不进去 是吧?这个七是个孩子,明白吧?因为七是这个学生表,往学生表里边加的是不是子记录?往班级表里边加的是什么?副记录,他说子记录加不进去,原因是一个方人 k 一个外界约束吧,这个英语单词之前我写过叫康思春的约束, 有一个外界约束失败,对不对啊?是是是,谁约束谁?这是谁引用谁?他说,他说北京动力节点下有一个踢下去死丢的呢。 ab, i, b, f, k, e, 这是一个约束的名字吧?啊?然后呢?外界是 class number, 引用的是 t class, 什么 say number, 他跟你说明了,说明你这个,你这个 class number 正在用人家 c number 的东西,你这个 class number 不能有出现。幺零三,幺零三,不是不是,那个 c number 中的数据, 听懂了吧?所以说外界约束重要吗?很重要。外界约束约束的字段,这个字段当中的数据不能随便写得,来自于某一张表当中的某一个字段, 这就是外界语数。怎么加个呗,你会了吗?这句话能记住吗?这 foreign key 是谁? references 他, 你不加这个约束,这个字段真的值就能随便写了啊?你这个字 上的知足,随便写,你是不是就不符合这个数据的完整性了?咱不说约束有一个什么作用,什么保证数据的这个有效性,完整性啊,合法性,对不对?哎,所以说这块呢,你得加一个约束,没有约束,表中的数据没有办法得到保障。 好,刚才我无意之间又给大家演示了四口脚本脚本。各位啊,我在这里又演示了脚本,就是四口语句,这个东西呢,可以写到一个四口脚本当中,想执行,他丧失一下就执行了, 懂了吧?哎,现在应该是懂了啊,最初你可能懵懵的是吧,不知道他是干啥的,但是现在我告诉你,以后开发项目经理就会给你这么一个社会脚本,然后你执行 sos 命令吧。社会脚本一执行,底层数据库的数据表全都有,我们以前开发一般最少的 表七八十张啊,就是一个系统最少的小系统七八十张。七八十张啊,如果就是说好几年,从好几年开发的系统几百张表很常见啊,很常见,那这个表呢?会使用什么呀?这个叫做这个趴窝底在哪工具啊?进行设计 party 的工具,到时候咱们可以演示一下 哦。这个没加,这个得加上啊,这个得加这个,这个不加不合法啊。这个没加 framekk 这样 s 行吧,哎。呃,什么算不?咱们就是举个例子,就是为了讲外见, 因为为了讲外建这个东西啊,就是举这么一个例子,在实际开放中我说了这个业务主业务主见,这个最好别用。对,你这个同学提的挺好 啊,就是这个什么学号啊,还有班级编号啊。这个其实并不是用,并不是完全的自然组建,对不对?他跟业务是不是有点挂钩啊?有点挂钩,确实是啊,说的非常有道理。有道理,对,这块咱们最主要是讲外见。各位你把这句话记住就行了。 就就主要是这个语法啊, foreign key 是谁?引用谁是谁啊?然后呢?再往下呢?我们要 说的是什么呢?就是说还有还有一个指点啊,就是外界能不能没闹, 外间直可以为闹吗? 就这个很简单,我们测一下就行,对吧?测一下,那这条语句拿过来放到这,这个删了呗。前面这块得写谁? student 这块的也有 s number 和 s name 吧,是不是走一个 t? 什么 student? 大家看外界是可以为浪的, 挡不住这个啊,外建可以为难。好,下一个直点还是外建。各位这个约束还没讲完,我想问你个问题。我问,你来答,你来思考,你来答啊。我外建 字段引用你另外一张表的某一个字段的时候,这个字段必须是主见吗? 就是外界自断。引用其他表的某个 自断的时候,被引用的自断必须是主见吗? 就我这个字段,我在引用的时候引用你必须得是个主见。主见吗?不是啊,不是别的字段也行,但别的字段必须有唯一性。 知道为什么必须有唯一性吗?如果你没有唯一性,就意味着您这个阶段可以重复, 对吧?如果完全重复的两条记录,下边再引用这条记录,这条记录在引用您的时候, 这个如果引用的是相同的,假如说是幺零幺幺零幺,我这个幺零幺到底是用的您这个幺零幺还是这个幺零幺?是不是说不清了? 听懂了吗?所以说,我这个外见字段引用您这张表的字段的时候,您这个字段不一定是主见,但起码具有唯一性。只要有唯一性就行, 这是最低要求啊。但一般情况下都是引用什么主见?一般情况都是这个自带引用主见。 听清楚,这个不是外建啊,这是主建。这个添加外建约束的字段才叫外建。这个 foreign k 叫什么?外建约束,其中这个添加有外建约 约束的字段叫外间字段,其中每一个值叫外间值。外间值。外间值。外间值用的是你其他一张表中某一个字段的值,这个字段至少具有唯一性,不一定是主见。我先说一下这个事啊,来这块你下去之后测一下啊,测试一下。我在这里就不耐测了啊,至少具有唯一性啊。不测了, 注意,被引用的字段不一定是外界啊,不一定是主界,但至少具有优尼可约束, 但至少有至具有有那个约束,唯一性约束啊,要不然你要重复了。那我这引用的谁就说不清了呀,这个东西是吧,这数据就不对了啊。好了,到此 位置,约束讲完了。好,再回顾一下,约束有外界约束、主见约束、非红约束、唯一性约束,非红约束。约束的这段不能 不能为空。微信约束,约束的子弹不能重复,但可以为空是吧?主见约束是说你这张表必须有的,对吧?哎,主见只代表你这行记录的唯一标识。 外界约束。说白了,我这个字段上的数据不能随便写,我这个字段上的数据不能随便写。我这个字段上的数据必须来自于您某一张表当中的某字段的值啊。背景这个字段必须具有唯一性啊,记住这就可以了。这样的话我们这个约束就说到这啊。

你知道买鞋口中的至尊锁吗?比如说我们的主见 id, 他是至尊的,我们现在开了左右两个窗口,我们先在左边去开始一个试物,然后我们这时候去插入一条数据,比如说这条数据叫做试, 我们在这里去插入一下,然后现在保存的他的主机 id 为四,然后我们再在右边这个窗口也去同样的去开启事务。那么我们在这时候,比如说我们去刷新啊,然后会发现这边依然是三条,因为我们左边的事务还没提交,所以说右边查出来还是三条,那么我们这时候再去插入一条数据, 比如说我们在这里去插入一条叉叉,然后我们去保存一下,这个时候会发现变成了五,你会发现在买些个默认的可重复读隔离级别中,虽然我们查不了左边的这个四的数据,但是他的一个至尊是根据这里跳过的,从五开始的。 如果说这个时候我们想强行插入世界的数据,我们看行不行呢?比如说这里我们去保存下这里就会发现他一直在转圈圈了,这就是买 c 口中的指针锁。如果说我们把左边的这个事物给提交了, 然后就会发现右边这个报错了,他会说我们的主机 id 四已经重复了,然后我们这里点就好,我们在左边再去刷线下,然后在右边我们去还原,然后这个时候我们再去提交下刚才的事物,然后这里再去刷线下,会发现这条五就出来了。