00:00
下边啊,咱们来看一下,这个叫逻辑运算符。啊,如果说大家接触过其他的这个编程语言的话呢,这个逻辑运算符呢,应该都算是比较熟了啊,就是说的过且飞是吧,主要就这三种,这个逻辑运算符呢,它在这个比较之前,左右两边呢,其实就已经是真或假的了,那结这个比较完以后的结果呢,还是真或假。啊,对吧,就是这样个情况,咱们在上面其实讲这个比较运算符的时候呢,其实也都接触过这个,呃,所谓的这个逻辑运算符了,来咱们看一看啊,这个呃或或的话呢,就是这个哦。那咱们上面也都用过了,或者你用两个竖线来表示,这呢也是或且呢叫做and,那或者用两个这个与的符号是吧?哎,这是且非呢,就是not。啊,或者是像我们说的有等号,前面加一个这个叹号,就是也是表示非的意思啊,这是或且非,那除这之外呢,还有一个叫逻辑抑或啊逻辑抑或呢,这个大家呢,不知道听过没有啊抑或的就是如果诶左边一个这个咱们说一个真货假是吧,右边一个真货假,只要呢,左右两边这个情况不一样啊,就是一个是真的,一个是假的。
01:09
那么这个结果呢,就是个真的对吧?且的话呢,当然就是前后都得是真,或的话呢,就是前后只要有一个是真的,结果就是真,非的话呢,那就是真的变成真的,加个非就是变成假的,假的变个真,再加个非呢,就变成真的是吧?就这个意思,这叫过且非,好简单的,咱们来这块呢,去举个例子就行啊,这个呢,应该大家都比较好理解,叫逻辑运算符,那对应的有哪些呢?或且非啊,或的话呢,咱们叫O,那或者呢,咱们用这两个符号来表示,且呢叫and,那也可以用这两个语的符号,非呢,叫not啊,也用这个符号来表示,那另外呢,还有一个是不是叫X2是吧,这个叫哎,逻辑,哎,抑或这个意思。行,那具体这个举例子的话呢,其实咱们上面也都出现过一些了啊,比如说这个嗯货的话呢,咱们说哎,或者是哪个部门,或者是哪个部门,哎,当时呢,其实也都是不是说过这样的这个场景。
02:01
在这是吧,哎,咱们把这个呢,比如说在整个粘过来啊,CTRLC一下。哎,拿过来,嗯,把这个打开,这个咱们比如说就去一个吧。啊,两个就行啊,好在这里边呢,前后这个关系呢,就是一个货,就是两边呢,就是都要,就是前边这个也要,后边也要,相当于取的是一个并集,所以结果里边呢,有十号部门的,也有20号部门的,那很显然的一个问题就是说如果我们把这个呢,CTRLC一下,我们粘到下边,我把这个on呢改成是一个and。啊,或者你用这个这个符号也行是吧,那就是既是十号部门又是20号部门的,这个我们说就没有了啊,每个员工呢都啊,他所在的部门就是唯一的是吧,所以这个案呢就查不到了,所以这呢就是个且的关系,就是前面也得满足,后边呢也得满足啊这样的一个意思,那比如我们列一个说呢,哎,首先是department ID,那咱们换一个啊,这个十个20部门人都比较少,比如50部门这个and呢,要求这个salary。
03:00
哎,还得大于比如6000,那我们看看这样的数据,把这个呢,我们这个注释一下啊选中,哎执行好,你看这块呢,我们看到了52部门当中是吧,首先你得是52部门的,然后呢,工资还得大于6000的1234那四条记录。啊,四条记录行,这个呢,就咱们说的这个,呃且的这样一个关系啊且或啊这个not的话呢,咱们也可以这个举个例子。Not呢,咱们这样来举吧,比如咱们前面呢做过这个事儿,说where,咱来一个salary,说叫between。哎,Between这个6000啊and。这个8000是吧,就是工资呢,在6000~8000这个范围内的,那咱们查找过这个数据,诶是这么多条,那不在这个范围内的呢,我们这前面是不是加上一个not呀,哎,Not比between啊这个这样就出来了,或者呢,大家也可以理解成咱们,哎讲这个是咱们说的是这个not的事是吧,哎这个呢是说的这个哎叫or或者是and的这个事儿,那么咱们还可以怎么着呢,这个咱们写过说where commission。
04:07
哎,Commission pd,咱们写过叫is now。那写过这个需求。哎,把这个呢执行一下,这是空的,那你也可以理解成呢,Is not呢是一个表达,就是为空的,然后呢,Is not not呢,这个也可以理解成是咱们这块这个呃非的这样的一个表述是吧,哎,就是not它这样一个场景也行啊,当然了,你也可以看作是is not now,整体上作为我们上面讲的比较运算符也也可以啊,都可以的。行,嗯,这是包括呢,咱们是不是还说这个事儿了。回忆一下,咱们刚才呢,在练的时候呢,CTRLC咱们还这样写过这个位置呢,咱们用的是这个安全等于是吧,啊这就是判断是空的,然后我们在前边这个位置呢,加上一个not。哎,这有三十五行数据,哎把它那选中执行一把,那是不是也是35没问题,行这就这个note,然后这个呃,抑或这个逻辑,抑或啊,这个叫so了。
05:00
啊,这个小写大写其实都可以啊,这个so的话呢,嗯,一般咱们用的比较少,一般用的比较少,就是你看我们比如把这个我CTRLC一下。翻过来。嗯,这两个我就不要了。大家看一下这效果。这个我把它选中,哎,执行一下。啊,选中执行一下啊,你看到这个效果什么呀,就是我们得到这个结果里边呢,就是要么满足这个,并且注意不满足这个,或者呢是满足这个并且不满足这个。啊,所以你在下边找数据的时候呢,就是相当于我们比如说这块呢,就是工资呢,你看满足六大于6000的话呢,它一定没有50号部门的。一定没有50部门的,如果是50部门的话呢,他一定工资是小于6000的。那五兆部门人还挺多的。哎,这个满足我们这样的特征,它就叫一个抑或抑或抑或嘛,你可以这样来理解,就是追求的。
06:00
哎,我都这样来记这个抑或呢,追求的就是这个抑。什么意思啊,就是不同呗。追求的就是不同,那就希望呢,就是当你要是不同的时候啊异同。这个这样写吧,嗯,当你要是两边一个是真一个是假的时候呢,我就要,那这就我们所谓的叫追求的就是这个意啊,大家去体会一下就可以了,那逻辑运算符呢,嗯,就这么几个,那我们整体想强调一点的话呢,就是用的频率还算是比较高的啊,嗯,这块呢,有一个小的一个结论呢,去说明大家注意一下,就是说呢,我们这个all呢,和这个and呀,是可以一起去使用的。啊,他俩可以一起去使用,但是使用的时候呢,大家要注意他们二者的一个优先级,这个企业的这个优先级呢,要比较高一些。啊,也就是说呢,比如说我们,哎,这是一个条件,然后and,哎这样一个条件,然后比如说我们在这个位位置加了一个or,然后呢,又是这个条件,然后and,我就不写例子了啊按这个条件这块呢,我们这个条件一看还挺多的啊,你不要理解成什么呀,是不是从前往后这个顺序执行,不是是先整个把这个算出来啊,你看看满足条件的有哪些,然后再整个把这个算出来,满足条件有哪些,然后这两个呢,取一个或啊叫并集的意思。
07:14
就是相当于and呢,我们要先去运算啊,两个都运算完以后呢,再去运算这个odd的,哎,所以说呢,就是and的优先级呢,哎,注意是高于A的优先级的。哎,这个大家要注意一下啊,哎,我们就是把这个呢CTRLC一下,在这块呢,大家做一个注意就可以了。哎,这个注意一下,那除了我们这个按德和号之外呢,其他的这么多丰富的运算符的优先级是什么样的呢?呃,这个咱们下边这块呢,也有讲到这个运算符的这个优先级,那既然说到这儿了,咱们就稍微可以提一下,这个优先级的话呢,按照这个序号呢,一直往下走啊,越往下的话呢,这个优先级就越高。啊,优先级越高,那么这个表格用不用去记住呀。不用啊,你要让我写我也记不住啊,今天记住了,明天可能就忘了,那么这个我们怎么去看呀?哎,我觉得分成两个方面。
08:07
啊分成两个方面,第一个方面的话呢,就是嗯,咱们在写的时候啊,其实嗯就遵从你的内心就行。啊,什么意思啊,就是一般的咱们写的时候呢,其实大体上你也能看出来,大概应该先算谁后算谁啊这个有同学说说老师你这种感觉是怎么来的,这个我我也难以言表,你像咱们说这个案的这个。啊,按着这个,然后呢,你这里有个哦是吧,然后这个按着这个,其实你一看的话呢,就觉得说这块呢,先成一个整体,这个整体,然后最后来一下哦是吧,这个理解之后的话呢,你以后再去做,你就知道是这样来考虑就完了。那先乘除后加减这些,咱们以前有过这样的一个呃意识的是吧,再者呢,你比如说我们去判断这个呃是不是相等,那你肯定是先把这边做了,把这边做了中间,诶我们在最后考虑是不是相等,那这里边如果有一些其他符号,那肯定是先算,先把这些符号里边是不是都算完以后,在整体上看是不是相等,对吧,你不能这块呢,从前往后走都判断相等了,后边又有一个其他的一个符号出现,那就不合适了。
09:06
啊,那就不合适了,你比如说我们这个判断完是不是相等,反过来是个一,你来了一个and,这个有的时候跟后边的就没法去比较。啊,所以呢,就是呃,你不能是从前往后的顺序啊,所以第一个点呢,就是先遵从自己的内心,就是如果你要看到别人写的话呢,呃,你大概你这个凭你的感觉你来判断一下,一般呢,这个感觉都是准的。啊,这是第一个,然后第二点的话呢,就是说如果我们自己要是去写的话啊,我们说的第一个点就是你看别人写的怎么看谁先谁后执行,对吧?第二点的话呢,就相当于是我们要是嗯自己写的话,怎么去区分,你说我这边写的我也把不准是先执行,是不是确保先执行它怎么办呀,大家你就记住这个事儿,我们小括号的这个优先级比较高,你想让谁先运算,你就把谁先加上小括号。那如果说本身就是人家小块里边先算加不加都行呢,那你加上的话呢,是不是也没关系啊。
10:00
哎,所以你记住这个事儿就行。一个是我们读别人的,一个是我们自己写的话呢,怎么去处理啊,我这都说清楚了啊,这叫优先级的问题啊,优先级的问题好,那么哎,等一下咱们回过来呢,再把这个位运算符呢给大家介绍一下。关于运算符啊,咱们还差最后一波叫做位运算符,这个位呢,也翻译成就是be了。啊,就是从我们底层去看一个数的二进制,然后呢,实现这个位上的一个运算啊,是这样的一个意思,那首先的话呢,我们强调一下,就是这个位算术啊,咱们使用的频率啊是比较低的啊,相较于咱们前面这三种。那是比较低的,那在其他的这个编程语言当中,比如说像Java啊,C语言啊,Tyon啊是吧,等等这些语言当中啊,也都有相关的位运算弧,基本上呢,也都是这些。也都是这些,那在编程语言当中,其实使用微运算符的比例呢,也都是比较低的。也都是比较低的啊,至少到目前为止啊,我接触过的包括呢,看到一些Java的一些底层源码,这个通常什么时候会用呢?我们涉及到呢,比如说给一个数组呢,去这个扩容是吧,扩容一倍,那我们就会让它去左移啊移位,那有的时候呢,我们想扩容1.5倍,那就是让这个本身的容量再加上啊,这个数组的容量呢,再向右移移位,相当于就是除以二,就是0.5位,再加上你本身的容量,这就是1.5倍,对吧,就是我们会涉及到这个左移右移,当然呢,在Java里边还有一个叫无符号右移啊,那个呢,作用咱们,呃,就是涉及到那个计算那个哈希的值的那个时候会用到啊,咱们先不考虑那个事了。
11:36
不管那个事儿了,哎,然后呢,这个嗯,这个暗卫与安卫或安卫抑或取法这个呢,其实用到的比较少一些。啊,比较少一些,那么回到咱们SQ这个层面来说的话呢,这个未运算符用的呢也比较少,所以呢,大家做一个了解就可以了。但是呢,哎,有个但是是吧,但是呢,就是不管是从编程语言上来说,从我们这儿来说,能用上的时候啊,呃,确实能够提高这个速度啊,确实能提高速度,嗯,那我们真正后边讲这个售后优化的时候呢,其实基本上都会忽略掉所谓的通过这个改变一个符号呢,去提高这个速度了,咱们真正讲这个售后优化的话呢,正更更多的呢,就是针对于咱们这个查询是吧。
12:16
针对咱们这个查询来说的,那我们就尽量的让他去减少磁盘的IO。啊,减少磁盘IO减少呢,我们这个交互的次数,哎,能不能正确的去使用索引,那到时候我们去更多谈的是这个层面的啊OK,行,那这块呢,大家做一个了解就行,来我们看看都有哪些这个符号啊,就刚才我们说的有这一些,那这些呢,其实可以分成两波,这呢是一波,这呢是一波。啊,因为上边这块呢,它会涉及到这个,呃,这个像上面这仨是左右的得有两个值,这个呢是取反,然后这个呢是左移右移啊,就针对当前我们这一个数左移右移的一个事啊是这样的意思,好,那我们把这个符号呢先写过来。这个是咱们这个第四波叫做这个,呃,为。运算符啊,运算符啊,看一下刚才有哪啊,暗卫这个与是吧?啊暗卫这个或啊还有这个暗卫这个叫抑或,哎这个啊,一个尖这个啊抑或还有呢,这叫曲反,那还有这个这个叫右移啊,还有这个左移啊就这样的几个符号。
13:16
行呃,那么呢,这个我们先把这三个说一下啊,这块呢,因为是做一个了解嘛,我就直接拿个例子呢,来给大家去讲解了,那我们就以这个例子来说。哎,CTRLC就是理解精神啊就可以了。那我们这里边呢,我拿了一个是12,拿的是一个五,他俩呢,安位于安位或和安位易货,那我们看一下这个结果是多少呢?哎,一执行那就出来了43和九。哎,首先呢,我们能看到就是这些符号的左右两边呢,它都是数值对吧?哎,都是数值,或者呢,你要写个字符串,你也得是把那个字符串是不是转化为数值啊,那转化规则呢,跟咱们前面讲那个等号的时候呢,是一样的啊,我就不多说了,那么具体的话呢,为什么12以上这个五就是四呢?来看我这个图。
14:02
这个图呢,非常的清楚啊,大家看。这个首先呢,你得清楚底层的这个12呢,用二进制它是怎么来存的。怎么来存的,那这呢,你看我标识的这个位数,这呢跟咱们小学学的一样,这是低一位,这呢就是这个高位是吧,所有的这个数据啊,包括字符在底层呢,都得是用这个0101啊来进行表示的,这个12的话呢,相当于它就是八加上四,那这个八呢,就是二的三次方,四呢就是二的二次方,咱们这个从低位到高位呢,这个对应的就是二的零次方是吧,二的一次方,二的二次方,哎,二的三次方啊,一次往上升,所以呢,这个诶八加四的话呢,是不是就这个位置是一,这个位是一,其他都是零就行,那这一加的话呢,就是12。这个啊,五的话呢,就是四加一。所以说呢,就是这个位置和这个位置是一啊,行,说清楚了,那接下来我们看这个雨是什么意思啊,就是大家你看这个零的话呢,你就当成就是一个假是吧,或者叫FALSE1呢,当然是个真啊,相当于是个处,那上下呢一走,那且嘛,这个你可以理解成我们上面讲过逻辑是不是有且的意思啊,那就是嗯,只有两边,呃,只有上下全是一的时候,结果才是一。
15:11
只有上下都是一的时候,结果才是一,否则呢,就全是零。所以呢,我们这个上下一比较的话呢。是不是只有我们这个结果才是一是吧,那其他的全是零,那这是我们一算啊,那么这个,呃,这个叫叫什么按位于,那它的结果呢,就是四。那这个呃,这个符号呢,按位或大家就理解成那个,咱们上面讲的那个逻辑上的那个货一样,只要呢,上下是不是有一个是一结果就是一样。你看上下只要有一个是一的啊,它这个结果就是一啊,这个也是一样,结果就是一,那你要上下都是零的话呢,结果就是零,所以呢,这个完了以后呢,这个一数,这个数就是13。啊13,那安位呢,抑或那抑或抑或咱们追求的就是一,就是你上下呢,一个是零,一个是一的时候呢,结果它是一,那像这种一个零,一个一的结果是一,你要都是零的,或者都是一的结果都是零。
16:07
那这个结果呢,它就是九。哎,就是这个意思。啊,就是这个意思,好说清楚了可以是吧,好,然后下边这个叫取反,那取反呢,这块写了一个例子啊,咱们就直接拿过来,我就执行一下就完了啊。啊,后边呢,加不加这个from down呢都可以,哎,把这个呢,我们给它选中走一下子结果是十是吧,哎,这里边呢,其实是使用了这个取法和我们这个呃,暗卫语的一个混合的一个操作了,啊混合的一个操作,那这个事儿的话呢,怎么去理解呢。这个。哎,其实这个取法这个事儿呢,反而还是嗯比较容易去理解的啊,咱们呢,就呃先画一个吧。嗯,简单给大家说一下啊,我这儿呢,有一个这个。嗯,画图板是吧。哎,滑动板啊,拿过来。这个呢,咱们先插入一个表格。
17:00
咱们就用那个,哎,这就一个。八个这个be的,八个bit的。八倍。行,那首先呢,搞定这个一,那一的话呢,就是这是一个一,那其他位置呢,就全是零了。那就它对吧,然后它呢,要这个取反,那取反是什么意思呀?来我们看一下这个,哎,给它这个质量二进制数,逐位进行取反操作,一变零,零变一啊,这就叫取反的意思,所以说这个数呢,我们要给它取反之后。哎,我们就得到下边这个了,把它移到下边。把这里边儿呢,零变一一变零。是不是就这样子,这个就相当于是啊,我在这写一下,这是一。哎,下边这个就是看取反的这个。没问题是吧,好,然后这个十的话呢,我们把它呢也哎弄出来。十。十的话呢,算算这个是不是就八加二吧,八加二那就是这是二的三次方,这是二的是不是一次方呀?好,那这个位置应该怎么写啊。
18:08
然后我们先把它都,哎,我先都换成零。哎,行是吧,然后八加二嘛,二这个位置呢,变成一八加二,那这个位置呢,是不是也变成一啊。这就相当于二的一次方,这是二的三次方,八加上20是吧,行。在这个位置。十好,然后中间这个位置呢,我们用的是这个符号呢,叫做按位与的运算。余余在这儿。然后整一根线。诶,打一根线。然后呢,我们过来。我这呢,先先都整成零。行来看这个与的话呢,那就是上下是不是都是这个一的时候呢,结果才是一,所以说你看只有这个啊和这个是吧,它才是一,那相当于这个位置我们改成一,那这个位也改成一啊没了是吧,那这个一看是不是跟我们这个十是一样的呀,那所以这个结果你看还是十是吧。
19:10
哎,这个结果呢,就还是十,通过这个呢,我们就想给大家呢解释一下,就是它这是一个什么意思,那就可以了啊,这不还是十嘛。行,这就是哎按位取反的意思,好,然后下面呢,我们来提一下这个叫左移和右移的意思,哎,左移和右移啊,举例子我们select一下,我写一个四吧,左移一位。然后来一个五啊右一哎换一个吧,比如八啊右移一位,哎from一个哎倒啊好选中那我们执行。大家会发现呢,我们这个四呢,左一位之后呢,就变成八了,这个八呢,左一位右一位之后呢,就变成四了,那为什么呢?那其实呢,你就完全的拿我们这个表格上来进行说事就可以了,那我们再去新建一个。插入一个咱们的表格。行,那四的话呢,是不是这个位置是一,其他呢都是零。
20:05
哎,这个呢,都改成零。没问题是吧,哎哎,这个是四吗?200次方21次方二的二次方四是吧?好,然后这个呢,我们把它,哎,比如说再复制一份过来,然后整体的往左去移了,往左移完之后的话呢,是不是这个高位呢,就相当于冒了,冒了就不要了,那低的这个少了,少了是不是就得补啊,那我们这块补拿谁补啊,拿零去补。诶拿零补,那这时候大家你想咱们原来呢,诶这个是就2.0次幂,然后呢,整整整整一直往上去递增,然后你往右移位之后呢,是不是原来在2.0次幂上的这个值是不是就变成2.1次米了,然后在21次幂幂上值是变成2.2次米了,相当于每个位置呢,是不是都多,哎加了一个指数的这个值相当于呢,是不是多乘了一个二呢。就是原来呢,你这是一个数,现在呢,这个数是二的几次幂加上几次幂加几次幂,现在大概基础上是不是大家整体呢,都往左移了一位,是不是都乘二,哎,相当于呢,就是咱们每向左移动一位。
21:05
每项左移动一位,是不是它就得是乘以个二是吧?那对应的话呢,我们每向右移动一位呢,是不是就除以二啊。来理解理解。那注意这块呢,它还是有一定范围的啊,你比如说本身我们这个是八位的话呢,你要是都移完了,全补上零了,这个结果是不是就变成零了呀。那所以说它在一定范围内呢,哎,我们说是满足这样的一个特征的是吧,在一定范围内。我们说满足什么呀。这个每向左移动一位啊,就相当于是这个乘以二是吧。哎,相对移动位啊,相当于这个乘以。乘以二,那每向左向右移动一位。向右。移动一位。哎,相当于那我们说叫哎除以二。
22:03
啊,这个我们说在一定范围内,你要超越范围内呢,我们就过犹不及是吧,那你要是呃光想着扩大呢,扩大到一定程度之后呢,再扩全补零了,那这个结果就变成零了是吧?哎,这个我就不演示了啊行,这呢就是我们所谓的叫位运算弧两波。哎,大家呢,整体上作为一个了解就行啊,如果以后你看到其他人写了的话呢,首先第一反应哟,他竟然用为星算服了是吧?哎,挺高级的啊,这是我们第一感觉,第二感觉,来咱们看看人家用,哎为什么要用,什么意思,哎,咱们已经讲了什么意思了,你去体会一下。哎,就是这么个场景,咱们自己写的话呢,建议大家呢,就是你就少用了,你也不用刻意的往这块去靠啊,当然我们说关于算术运算符,比较运算符和逻辑运算符这三这三波的话呢,是需要大家重点掌握的。OK,行,那么关于运算符这一章呢,咱们就说到这儿。
我来说两句