逻辑运算符
逻辑运算符主要是为了判断表达式的真假,返回结果也是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一样的概念
这里就是为了大家看别人用位运算符,感觉哇高级,我也看得懂.但是我们自己就别用了,不用刻意去靠.至于另外的算术运算符,逻辑运算符比较运算符,是必须重点掌握的.