00:00
之前啊,咱们一直在讲的这些啊。讲了这么多连接,你看都叫做内连接,都叫内连接啊。哎,多表连接有两个分类,一个叫内连接,还有一个叫外连接。那么咱们来说一说这个Y连接是什么?嗯,在说这个外连接之前啊,外连接之前啊,咱们先准备一下数据啊,因为我这个表里没有什么。很简单的数据。看好了。外连接开始。呃,准备数据。这两张表,Test a表。有ID。呃,咱就叫number吧。12345嘛,是吧。几个嘞,六个吧。Name,我叉二。
01:02
再来一个年龄。三就够了是吧。这个表创建完成。紧跟着呀,插入点儿数据,Insert into test a values。A。年龄是吧,21。简单改一下。是二十二二十三行吧。这个数据非常简单啊。再来一张表。刚才叫test a是吧,再来个test b。ID列。Number。再来一个。Money。钱。NUMBER6。
02:05
Insert into。这边。啊,一号人物1000块。二号人物。2000块。四号人物。4000块。插入了吗?这个。执行。好了,这两张表咱们这边看一眼。CB是吧。上一个A表。这个表的数据没问题吧。ABC123。可以把这个表理解为是咱们的呃。人员的信息表是吧,哎,张三21岁啊,然后这个B表呢,表示的就是他的金钱。银行账户。你看这个关联是不是用ID关联啊。就是说一号用户。
03:01
小A,他有1000块钱。二号用户小B才有2000块钱。然后三号用户一看没钱。OK,这是我特别准特殊这么整的啊,不是说我写错了好吧。好,来,咱们来看这两张表的数据结构清晰了吧。新起了之后啊,咱们就开始写这个连接了。咱们一上午的时间学习的其实就是内连接,如果使用内连接的话,让这两个表做关联查询会怎样?Test a,逗号test b,对吧,条件要关联了。怎么关联的两张表?靠的是不是就是ID。Test a.ID没错,Test b.ID连接查询结果。是不是只查出两条来?查询两条来,所以一定要记得内链接它查询的是什么。
04:03
他其实就是查询。多个表之间。共同。匹配的数据。没问题吧?就是你有我有,咱俩再做内连接就能查出来。对吧,哎,你有我没有那链接查不出来。你没有,我有也查不出来,只有咱俩共同的东西。才能查出来。有点类似于咱们。数学里边的是啥呀?交集是吧。哎,交集啊。没问题吧,这是咱上午学内链接哈,接下来呢,找了外连接了。Y连接。那么这个外连接呢,又分为左外连接和右外连接,这个只是一个方向的不同啊,其实本质上是一样的,咱们只咱们说一个啊外连接。先说这个。左外连接。左左左左。
05:01
Y连接。好,那么这个左外连接它是什么意思呢。看清了,你看到这个结果就能猜出啥意思了,我先把这个结果给大家查出来啊。Select星from test a,逗号B。这个不能是逗号了。左外连接的关键字,把这两张表连上,叫left。Joy。加入join,加入是吧,Join us加入我们。招聘网站上有的是吗?然后这个left叫左往左边去加入哈。你先甭管走完前啥意思,你先看我写完。它俩的关联条件为test a的ID等于test b的ID。好了,一直行,看清结果开。他会怎样?也就是说ABC什么表啊。
06:01
A表的数据全部搞定了吧?但是B表中。匹配的没问题。不匹配的呢?或者说A表中有,B表中没有的呢?是不是就以空值替代啊?控制起来。所以这就是左外连接。先写外连接的概念。呃,外连接是这样的,它只会。将。将。主表中的数据全部查出。全部查询。而从表中只查询。行。匹配的。别想了,就直接打匹配的。如果不存在。
07:01
则。则。空。是这个结果吧。因为这个三号这个C这哥们儿。他是不是没有存款啊。所以呢,以空值替代。他说那四号咋没有呢,为啥呢?因为我说了他只会。查询主表中的全部数据。问题又来了,那这个A表和B表到底谁是主,谁是虫呢?看这个啊,很好,你看这个语句就知道了。记住了。Left这个单词,这个单词。Left是什么意思吧?就是左这个单词左边的表。纪为。好几把。哎,左这个单词,左边这张表为图表。
08:04
所以他就把A表中的数据全都给你搞出来了。不匹配的充值替代。OK。好,那左外连接说完了,来个右外呗。现在右外连接我的代码一模一样。又又又。只不过把这个单词改为R。这个单词跟上一个套路吗?上一个是左这个单词,左边这张表为主表,那这个呢。谁又这个单词右边这个表呗。所以他这个结果能想象出什么样吗?能想出来吧。这边残缺的控制是吧,而这边儿呢。应该124都有是吧,好嘞,走是不是。
09:03
没问题吧?这个就叫外连接,玩这个外连接最关键的就是找图表,找从表,然后你到底是左外还是右外,套用语法就可以了。套用语法就可以了。那么咱们这个程序写到这儿啊,你们说你这个关联条件为什么是用on啊,而我上面的为什么用where啊。其实使用on这种方式,这种方式是标准的写法。那咱们如果上面这个内连接的话,其实也能改成on这种方式。可是我不太习惯。好,怎么改呢?这么改?接下来我写的这个东西和这上面这个它俩是等价的啊。只不过是一种全新的语法格式test a。连接。
10:01
Test b。你看跟下面这个。是不是他俩他们之间是不是都一样的,然后后边写。Test a ID等于B的ID。OK。这种形式,这种形式,这种形式。一直是咱们这个就是数据库啊,想推广抢购这个普遍全球的一种写法。但是呢,由于这种东西啊早已深入人心,所以目前为止。On的这种形式推广的还不是特别顺利。还是外人为?基调啊。好,那这两种方式呢,你都需要去掌握啊,都需要去掌握。这样的话呢,外连接咱就说完了,咱们把PPT再过一遍啊,看这个左外连接它是怎么说的。
11:00
呃,Student表,Score表,然后查询结果会怎样呢?以他为主表啊。再次非常优秀的夸一下自己,我这个PPT做的其实挺好的。好好细细看啊,对吧,你看看我这小箭头一个个搞动画,他这个四是没有匹配啊。匹配,所以结果为这样。结果这样。四在这个里边没值嘛,是吧。这个结果。看了吧,以他为主表的话,那就说这四个人物你必须都有。是这意思吧?东邪西毒,南帝北丐。哎,四个人都有。但是这北北丐这哥们没参加好治哈,所以他怎样?控制起来。在从表中,在从表中没有北盖的数据,所以用空值。
12:00
OK吧?这个是阻碍连接哈。啊,这里边儿呢,其实这些字呢,都是我讲过的啊,相匹配的返回结果。东邪西读都都有的,然后不匹配的空值返回。然后右外连接呢,其实跟左外连接是一样的啊,一样的啊。看一下我这个语句啊,当然我这个用中文形容的,看看他查的是什么。呃,查询编号名称出版社就是这个结果哈,就是这个结果,然后来自于图书表,图书表,然后右外连接出版社表谁位主表。又这个单词一出现,就找右这个单词,右边这张表它的主表,所以结果会怎样啊,出版社的所有数据。
13:01
都出来了吧?哎。然而,然而没出版社中没有匹配的,是不是以控制替代呀?那这个需求的话,其实翻译过来,你看出版社在这儿,既然你没有书。哎,反过来推的话,那这样的查询可能是查的就是这个需求呗。也许这个出版社很久没有出版书了。很久没有出来书了。好,咱们接着写一些案例哈,呃,我在这里边有三个,有三个我先写一遍,然后呢,我不给我把代码删掉,大家再写好吧,因为这个外连接还是刚接触啊,他不熟。把这个查询所有科目的参考信息过来。查询。所有科目的参考信息。这个东西已经在这儿了,参考信息查的是不是就是成绩啊。
14:00
对吧,那么所有科目已经告诉你了。我不管有没有成绩,是不是科目必须全搞出来。所以这个里边的主表是谁呀。科目表吧。写呗。Sure from subject。哎,Subject写到这儿了,而且还以subject为主表,那肯定就是left。连接谁呢?Without without。哎,成绩表,然后写条件,条件就是。表的。科目ID吗?等于成绩表的。就这结果。啊,正常观察,哎,咱们Java啊,都有人考是吧,都有人考他说哎,我去这么多宠物呢。学号是不同啊。
15:00
然后往下滚一滚,滚一滚。看到了吗?这些科目,这些科目咱们是不是都所有科目啊,上面这些都有人参加考试啊,而这些科目是不是没人参加考试啊。没人参加考试,咱们也需要把这些都列出来。也需要列出来。好,咱们来再看下一个他说从未参加考试的科目习题。从来没有人参加过这个考试。查询从未参考的科目。那我是不是其实查的是不是这几个。那我就看没有参加考试科目的话,那就是成绩为空呗。对吧。查询。查询from成绩表,条件是。成绩。Result is,空。
16:00
是这个意思吗?这这俩哥们虽然没空的话,但是他是不是就是参加考试的,只不过。这啥呀?交白卷的意思是吧,哎,交白卷的意思啊。好,那这个咱们到底应该怎么查呢。你这么这么查啊,这么查,呃,你先甭把这个过不过滤,这个你先给他放下。这个所有的参考信息是不是都在这儿了。好嘞,那我查询一下参考的所有的科目ID。就都在这儿了。都在这儿了,去个重复,这个重复的吗。D是吧。OK,也就是说这几科都有考试成绩吧?那么除了这几科,是不是就是没有参加考试的了?
17:03
有思路了吗?Share from subject。条件是使用这个ID,在这个范围内。这是啥意思啊?这些科参加了考试对吧。来啊,后。哎,然也。这些课没人考试。哎,这些科没有人参加考试。这是咱这个需求了。这个用了一个子查询是吧。最后一个,查询所有年级对应的学生信息。年级对应的。啊,不是就那个什么。学生信息是吧。查询所有年级这一代所有,那肯定他就是主呗。
18:02
Slack。Here from grid。它为主表,那就用left join。对吧。然后搁哪个表过来啊。学生信息是不是学生表啊。写这两张表的关联条件吧。靠什么关联?这应该知道了,Student里边是不是ID列?然后great里边是不是也有great?就这两个来啊。那就是GR great表中的。ID等于学生表的。瑞。所有的信息都在这儿了。然后有这仨。这三个阶段没人。看到了456这个没人啊,咱之前的时候123有人。哎,这就是咱们的。好了,这三个练习呢,我都给大家写完了。三个都写完了。
19:08
多少啊?
我来说两句