【mysql】逻辑运算符

逻辑运算符

逻辑运算符主要是为了判断表达式的真假,返回结果也是1,0,null

OR

这里面或就是两个条件或的关系,比如我要department_id等于10和等于20的情况就可以使用或.

SELECT last_name,salary,department_id 

FROM employees

WHERE department_id=10 OR department_id=20

AND

这就是或的关系,如果我们把或改成且也就是AND,结果就没有了,因为一个人只能在一个部门里,本在两个部门中,如果要AND,我们可以做这个条件,id是20而且工资在6000以上的人.

NOT

我们还记得BETWEEN AND吗

我们要查询工资在6000和8000之间的情况.

如果想查询不在这个范围的,我们就可以直接使用NOT

SELECT employee_id,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
#那么我们想要不在6000到8000范围内的函数怎么办呢.

之前还说过IS NULL 和IS NOT NULL,这个既可以理解为IS NOT NULL是一个整体也可以看成我们加了一个逻辑运算符NOT

还有就是我们之前说的安全等于,如何安全不等于呢?

就要使用 WHERE NOT

 

还有就是

XOR

SELECT last_name,salary,department_id
FROM employees
WHERE department_id=20 XOR salary>6000;

这个我们用的比较少,它的含义是要么20号部门小于6000,要么工资大于6000部门是20

大家要记得OR和AND,如果同时出现,我们会优先计算AND.yun

既然说到这个了,我们再说一说运算符的优先级

运算符的优先级7.51

我们这个优先级很多时候都是靠我们个人的感觉,比如有一个 and or and,你很容易就发现前后一个是一个整体,会优先计算前后,然后计算or.之后也就记下了,比如考虑是否相等,也是a=b,也是会先计算a和b然后再考虑a是否等于b,如果先判断相等之后再去后面比那肯定就不对.你看别人写的,就按照自己的直觉,你的直觉不会骗你,如果你自己写抓不准,你就用小括号,小括号一定是最先计算.

位运算符

我们使用的频率是比较低的,位运算符代表的是要把值转换为二进制,然后对它进行位运算,然后再变回十进制.

大家做一个了解就行,如果真的用上了那确实是会增加运行速度,但是我们实际上根据一个符号来优化的情况太少了,我们更多的会对SELECT进行优化.

我们会让他减少磁盘的io和是否能正确使用索引这方面来进行优化.

&|^`>><<

这里我们就举一个例子就好:

SELECT  12&5,12|5,12^5 FROM DUAL

这个的结构是4,13,9我们发现符号左右两边都是数值,这是我们这个符号的要求,是不能改变的。我们来看我们的图,这个图非常清楚

12用二进制是如何算的。与呢是什么,我们就把1当成true,0当成false,只有两个都是真才是1.

或就是只要1个是1就是1,异或就是

SELECT 10 & ~1 FROM DUAL;

~代表的就是1变成0,0变成1,&的运算就和之前一样,都是1的时候才是1。所以最后结果还是10.

运行一下也是一样

至于左移右移的意思和大家的想法也是一样的

完全拿我们表格说事就可以了.代表的含义其实就是翻倍和减半

因为二进制都往左移了一位,所以就是乘2,就像我们十进制左移一位就是乘以10一样的概念

这里就是为了大家看别人用位运算符,感觉哇高级,我也看得懂.但是我们自己就别用了,不用刻意去靠.至于另外的算术运算符,逻辑运算符比较运算符,是必须重点掌握的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天qt01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值