00:00
好,那么关于这个多半尔查询的话呢,我们按说呢,到此为止呢,呃,就算是告一段落了啊,最终呢,我们核心留下来的就是这样的一张图,呃,需要大家能够下来呢去掌握,那么关于我们这个SQ99语法的话呢,实际上还有几个新特性啊,这块呢,我们把这个SQ99语法的这个新特性呢,给大家说一下,那其中一个呢,叫做自然连接啊,另外一个呢,叫做U性连接啊,那如果呢,大家不知道这个新特性呢,也没有关系,就是上边的话呢,已经能够咱们讲的这些语法规则能够解决咱们所有的这个问题了,就。那只不过呢,这块呢,就是大家呢,你要是看到别人这样去写了啊,你自己呢,能够知道它是怎么回事就可以了,所以呢,相当于是一个知识的拓展,这块我们说两个,第一个呢,叫做这个哎,自然连接。啊,这呢是咱们这个叫CIRCLE99这个,哎,语法的新特性。哎,新特性啊,这个叫一个一吧,哎,这叫自然连接啊,第二的话呢,就我们提到那个叫using的一个使用,什么叫自然连接呢,自然呢叫做nature是吧。
01:03
连接呢,我们叫做这个John,所以它用的这个关键字呢,就叫做nature啊,就叫做nature John啊,这块我就直接拿咱们这个,呃,代码呢来说了啊,我就粘过来啊,粘到这儿好大家看。那现在的话呢,你看我们是查询员工的ID last nameme和department name,然后呢,是这两张表中间是个John John的话呢,咱们说了这两张表呢,它其实有两个字段呢,是可以去关联的,那一个呢,是这个部门的,呃,这个ID是吧?还有一个呢,是不是叫这个manager ID啊。啊,都一样是吧,那相当于我们这两个表连接的时候呢,是不是有两个连接条件啊。OK啊,这个怕大家有点懵哈,那这个样子,我在找到咱们最初的时候。啊,这样的一个表啊,我把这个呢,再截一下图。嗯,稍微大一点,行,我放在这儿好再回过来啊,啊大家看。咱们这个呢,在做这个嗯,查询的时候呢,我们这个表中的department ID和这个呢,是不是作为一个连接的字段了,那其实呢,我们发现呢,是不是还存在着一个叫manage ID的这个字段,跟这个字段呢,你看是一样的是吧?哎,那相当于我们在这个手动写法的时候呢,我们把它俩呢作为了呃连接条件了,相当于连接条件有两个啊,我们把它选中执行一下,一共呢是有32条记录。
02:20
啊,32条记录好这个呢,心里有数,然后呢,我们现在用这个nature join去操作,那我们就直接到这就行啊,CTRLCCTRLV,然后这个位置呢,我们加上一个叫nature。啊,这个单词呢,首先得会写啊,就是自然的好,那把这个呢,哎,这个当然没有分号也行哈,哎,加上根号呢,更严谨一点啊,选中执行大诶刚才我们是多少条。没注意到啊,32条是吧,然后我们这个呢,执行完以后呢,大家发现是不是也是32条记录啊,就是上边这两个,呃,这个上边这个和下边这个写法它俩呢是一样的。是一样的,那明显呢,下边这个操作呢,是不是更简洁一些啊。
03:00
啊,更简洁一些,那我们怎么去理解它呢?自然连接啊,我们看看这个课件里边写的。啊,找到我们这个。啊,自然连接啊,大家看这啊说我们可以把自然连接理解成SSQ92当中的这个等值连接,它会帮你自动的查询连呃两张连接表当中的所有相同的字段,然后进行等值的连接,啊这呢就是我们这个自然连接它的一个意思。啊,我在这块写一下。哎,这就是他的一个意思。嗯,OK啊,嗯,那你看我们这个员工表和这个部门表里边呢,它其实是有两个字段呢,是不是这个名字是一样的啊,一个是叫manage I,一个是这个department是吧,所以呢,它会自然而然的把这两个都作为连接条件呢,哎,去做查询,这就是它的这个意思啊,那我们想说的是就是虽然这个简洁,但是它这个是不是不够灵活呀,为什么呀?哎,你想想,如果我们在查询的时候,咱们只想看说这个满足他俩里边这个底盘ID只要一样就行,相当于我们实际上想做这个事儿查出来的,这不是有106条记录,但是呢,你要是这样写的还会强制的,是不是把另外一个字段也给你连上呀。
04:13
不够灵活是吧,诶所以说这个大家了解就行啊,哎,平时开发中的话呢,建议大家呢,你还是使用咱们之前的方式就可以啊好,这是我们说的这个,呃,一个新德性了,然后还有它这个新特性二啊,这个我们称为它叫做U性的一个使用。啊,U性的一个使用,这个呢,是相较于我们这个内照呢,它又做了一个呃优化啊,你看这个呢,要呃这个反而倒是更好一点啊大家看。这个呃U性啊,这个我我我看啊,这是咱们行行,这是咱们原来的写法啊,把它拿过来。放在这儿。嗯,这个放在这儿,这儿呢,是咱们写的这个是不是,呃,From它这个,哎,我们还是用这个join吧。
05:00
啊,这个是用这个on是吧。哎,这不是SQ99语法里边join啊,那这个我们查出来这个结果呢,是不是106对吧,然后现在用这个using是什么意思呢?我们这样啊,我粘过来以后,然后在这呢,来一个这个哎,Using depart。啊ID哎这样,哎,我们看这样O不OK啊选中啊执行一下哎,是不是就出来了,这个U性的话呢,相当于它替换的就是我们的这个连接条件对吧。那么替换类连接条件的话呢,哎,我们说什么情况下能够用这个U性去替换呢?就是当我们使用的是这个表中的字段和另外一个表中字段,它俩这个名字是一样的时候,我们就直接呢,就using一下了,哎,他就会去这两个表中分别去找这个字段。哎,找这个字段了,这就是他的一个简写的一个适用场景啊,那这个场景呢,不适用于谁呀,我们前面是不是讲了一个这个字连接呀。在这是吧,这个字连接的时候,当然你看我们是找的这个员工表里边的manager ID和这个啊,其实也是员工是另外一个表中的这个,他俩这个字段你看它就不一样啊,用等号连接的,所以这种呢,是不是就没办法改成U性的使用是吧。
06:11
啊,这个注意一下啊,所以这个U性的话呢,就是它也有自己的一个适用场景啊,适用场景啊,这里边写的啊,这个括号呢,填入需要指定的同名的字段。只有是这个同名的啊才可以行,那这个U性的我们就说清楚了,那大家完全是不是也可以不用这个U性,就是U性也好,那些状也好,他们两个呢,能写的时候呢,看着很简洁,但是呢,适应的场景呢,呃,是不是就条件呢,就更苛刻一些是吧?啊就完事了啊好,那么至此的话呢,咱们关于这一章的内容呢,就讲完了啊,东西呢,其实挺多的,简单的做一个小结。啊,我们这个小结呢,是从另外一个维度来说的,上面我们这个这个呢是一种总结方式,就是核心的话呢,我们要会写这七种这个连接啊,几种这个查询。然后呢,另外一个总结方式呢,就是我们从整体上来看,不管是CIRCLEQ92啊,SQ99啊,只要是多表的这个,呃连接的话,我们关注于这个连接条件,我们写法呢,其实算是有三种是吧?啊一种呢,像我们讲circle,呃,九二语法的时候呢,是在where中写这个连接条件啊,九九语法中呢,是在on里边去写啊,九九语法里边还有一种特殊情况呢,就直接在这个U性里边去指明的啊,就这三种是吧,这三种里边推荐大家使用。
07:27
On的方式。哎,推荐大家使用on的方式,为什么呀?那SQ求九语法在这个MYSQL当中是不是能够实现外连接了啊,它不就是选择on吗?哎,所以我们推荐用这种方式,UC呢,它这个因为适用场景比较窄是吧?必须呢是要求,哎它这个字段呢,得是一样名的啊才可以,所以这个呢,咱们就哎忽略掉这个UC了啊,所以主要呢,大家会掌握这个啊啊下边呢,我又举的这个具体的这个例子啊,大家熟悉了就行啊,这里边有一个小细节呢,大家你看这儿啊,这样看写也是可以的啊。哎,我就这块儿呢,粘过来一下。
08:03
啊,这个呢,就做一个,嗯,拓展就行啊。哎,什么意思啊,你看啊,我们这呢是1233张表,然后呢,员工表和这个表呢去连接,哎,然后呢,你看我们连接完以后呢,没有马上呢去按这个,呃叫什么左边连接条件,而是呢,后边紧跟着又去照了另外一个表,然后呢后边统一的是写的这个连接条件。那因为呢,你是in join又in的join一下,后边写on的话呢,你都是on的情况,那所以呢,中间有个and起来连接就行,哎这样呢也行。啊也行,但是建议大家呢,你还是哎,照一个就加上一个啊,然后再照一个再加一个啊,啊建议那样去写啊,这呢就做一个开开眼就可以了。那么这块呢,关于我们这章结束了,结束的时候呢,最后这块呢,我又啊做了一个注意啊,需要大家呢,去这个提醒的地方,这呢把这个呃,这个操作呢,我来自于哪儿呢。就来自于。啊,我给大家呢,这边是发相应的这个资料里边啊,大家下来呢,建议你也看一看啊,啊或者你不看也没关系,我把这个资料呢,呃,阿里巴巴这个Java开发手册里边涉及到了咱们这个。
09:10
哎,这个我把它。试用一下。哎,WPS来打开一下哈。我把这个阿里巴巴的这个泰山版的这个资料呢,呃,涉及到咱们这个MYSQ数据库的这个部分啊,它不是在这块呢,有吗。哎,涉及到MYSQL数据库的这一部分呢,我都完全的融入到我们这个上篇和下篇当中了,尤其涉及到一些优化的这种场景。啊,优化的这种场景呢,我都放到咱们这个内容里边了,所以大家呢,你看也行,不看也没关系啊,诶这个我们在授课当中都会给大家讲到,比如呢,关于我们这个多表查询的时候,这里边儿就会提到一个点啊,这是这个阿里巴巴的一个规范,说超过三个表禁止用join。啊,因为照样字段比较多啊,这个数据类型呢,必须保持绝对一致,哎,查询的时候呢,需要保证有索引,就是一旦我们这个表用照的比较多的时候呢,这个效率呢,它其实就会变差。
10:08
啊,所以在使用的时候呢,很有可能呢,就是呃,应用的应用不上啊,属于这样一个场景啊,具体细节呢,我们到时候讲到那个,下篇说到这个多表查询的时候呢,我们再来去谈啊。呃,那。多说一句,就是为什么限制多的这个照操作呢,就是你每加一个的话呢,我们需要这块去做连接,相当于呢,有点像我们这个里边一层for,里边套了一层for啊,你要是再加一层罩呢,相当于是又套了一层for,那本身呢,像咱们在编程语言当中,你超过三层for的情况下,是不是就很少见呀。哎,那这儿呢,就自然而然的也会禁止到我们三个表上去做,这个照样操作是吧?啊体会一下啊行,那么关于多表查询的知识层面,我们就说到这儿啊,我们接下来再看呢,就是看课后练习题了。
我来说两句