00:02
对,下边我们说一下这个事儿哈。嗯,多对多关联关系在数据库中的表示。多多关联关系,哎,这里边儿呢,有个首先来说呢,它需要一个中间表。哎,为什么需要中间表上打卡。我们这儿新建一个Excel呢,咱们来举个例子来说一下啊。其实挺好理解的。嗯。比如说你们现在能不能想到一个典型的多对多关联关系啊,生活中什么。哪两个量是多对多的关联关系?课程和学生是吧。可以,一个课程可以有很多学生来学,一个学生呢,他要学很多课程是吧。很。
01:00
你有,你有当老师的潜质。课程叫subject,学生叫student。那么嗯。那么这个时候各自表示的话呢,假设啊就两个字段,假设就两个字段,哎,这是课程一哎。呃,我们。那好吧,嗯,Java SE。课程二,加Y吧。3GDBC成4SM。大概几年前。九年前七年前吧,学会这些呢,差不多就可以找工作了啊,你再做上一两个项目。现在不行了。现在不行了,学生的姓名呢,比如说S1。S2。我们给它生成一下。就是咱们少来几个啊,咱们不用那么多。现在呢,假设我们想表示这样一个这样一个一个一个关系哈,就是说我这个。
02:05
每个课程都这三个学生都学了,每个学生啊,都都都学了这里面所有的课程啊,嗯,那么这时候呢,如果说没有中间表。我们在课程这个表里边儿,给他整个外键啊,外键比如说叫FK哈。或者叫做这个就FK吧,再见。这个外建呢,这个课程有三个学生学。那你要非要放在这一个字段里边呢,那你只能是这么写了,我现在我也想不出来别的有什么办法写。是吧,那你放在这一个字里边就得这么整这个。逻辑上来说,你能表示这个意思,这个倒是没错,是能表示这个意思,可是我要是想做一个关联查询,这个怎么办呢?这个SQ语句就没法写了。啊,Left join这个连接条件没法写,就这个搜狗语句没办法自动的帮我们把这个给拆开,拆成一个一个的值,它只能把这个当做一个组。
03:05
啊,这个就搜狗语句没法操作啊,所以这是我们不采用这种办法的这个原因。Control c。嗯,就是说我们先看啊,就说这个,哎,没有中间表的情况。哎,这个分享我觉得大家都应该都能理解。嗯,这个原因啊,就是说。呃。如果。只能在一个。外。呃,列。上去存储。关联。关系。数据。啊,那么。现在这个情况。
04:01
嗯,无法使用语句。进行这个关联查询。哎,那么说这个如果有了中间表。有中间表的话,这个就不要,我们这就不要这个字段了,不要这个字段了,另外整一个表。另外这个表,比如说呢,这个叫做t inner,诶。梯形哪,这个表本身有一个字段,做这个这个中间表的主键。还有一个呢,给他来一个subject ID,来一个student ID。然后呢,嗯,科目一有这个一号学生,科目二有,呃。对,应该是这样哈,科目一有二号学生,哎,这边。这边是三是吧,然后呢,这边开始这个是二。
05:03
这边也是123。嗯,三。四。然后呢?这就能够表示的,然后这边他自己的这个主件。那么这个时候每个值就每个字段就一个值,这个你用关联查询的话,你查它关联这个表,再关联这个表。这个写两个,写这个left照应就行,写两个left照应就行啊,哎,这就能够实现这个关联查询。这个搜狗语句就能写了啊,但是说这三个表关联肯定呢,它比两个表关联呢,要复杂一些啊,但是这时候他能做啊,这是能做哎。你比如说呢,我们写啊。
06:04
嗯,假设呢,我们想根据呃这个。科目的一号,把学过这个课程的学生都查出来。Select。这个叫做。Student。点ID。嗯,然后呢,student.name。然后呢,From这个肯定是从t student里边去查。然后呢,然后呢,让他去。这个去连一下中间表T。然后连接条件呢啊。掉点ID。等于T。点student ID。然后呢,再left。哎,这个就是说用中间表,用中间表。
07:02
哎,用用用中间表再去连这个t subject。嗯,T subject。哎,然后呢,连接条件是。Inner。点subject ID。等于哎。Subject ID啊。然后呢,这边where连这个最后的where条件。是这个。点ad等于,比如说等于一啊,这就根据科目去查这个学生。就这个麻烦一点是麻烦,但是他可以查这个可以做啊这个这个东西,不然的话,你这样的话用这个用搜狗语就没法做。嗯,所以说呢,得有个中间表啊,我们后边呢,确实我们后边操作的时候也需要去建对应的中间表。
08:00
然后呢,还有一个事儿,就是说这个中间表。它这个主键生成的方式。这个中间表主键呢,有两种方式哈。方式一。方式一呢,就是说,呃,另外设置字段。作为主键。就我们现在这个就是,我们现在这个就是。他另外设置了一个一个字段作为它的主键。还有还有另外一种办法呢,可以使用联合主键。联合组建。嗯,如果是联合组建的话,就不要这个字段了。
09:01
给他删掉。就这俩字段本身。然后他们两个联合起来构成这个主键,所以说呢,这个这个表里边主键呢,其实是这样的。主键的值呢,是这个一逗号一,一逗号二,一逗号三,二逗号一,二逗号二,二逗号三,后边就不写了啊哎,那么这个组合组合是不重复的就行。单独的每一个字段重复都没关系,但是组合起来不重复就可以了。组合。起来。不能,呃,重复。啊,这个事儿咱们了解一下啊,还有这个联合主键这么个设置的方式,它俩合起来构成这个主键。看这边咱们能不能试一下啊,比如说在这个test这儿。新建个表。
10:03
这个表呢,叫做。Good。随便瞎写一个列名呢,叫做一个ID。A。这是一个int类型的,这边来一个ID的B。这就不自增了啊。这俩都是主件。然后呢?这个这个打开,哎,你看这个栏位是这俩哈索引。主键,哎,就是你看这个主键呢,这边是他俩共同构成主键。然后呢,说我们去在这里边写入数据的话。111213这都可以,但是你再写一个一二。保存一下。这就不行了,因为你这个组合是重复的。啊,组合就不能重复了啊,这个应该说也是很好理解啊,这个了解一下啊,了解一下。
我来说两句