【MySQL】MySQL中的逻辑运算符,位运算符和运算符的优先级



一、 逻辑运算符

MySQL中支持4种逻辑运算符:

运算符作用
NOT 或 !逻辑非
AND 或 &&逻辑与
OR 或 ||逻辑或
XOR逻辑异或

以上4种逻辑运算符都非常简单,如果有其他编程语言的基础,看一下以下的例子就理解了。

1.1 逻辑非NOT

【例子】查询员工表 employees 中月工资 salary 不在6000 ~ 8000 的员工的 employee_idlast_namesalary 信息。

SELECT employee_id, last_name, salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

查询结果:

image-20220627103833616

1.2 逻辑与AND

【例子】查询员工表 employees 中部门ID department_id 为 50 且工资 salary 大于 5000 的员工的 employee_idlast_namesalarydepartment_id 信息。

SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE department_id = 50 AND salary >= 5000;

查询结果:

image-20220627103445076

1.3 逻辑或OR

【例子】查询员工表 employees 中部门ID department_id 为 10 或 20 的员工的 employee_idlast_namedepartment_id 信息。

SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id = 10 OR department_id = 20;

查询结果:

image-20220627102735331

1.4 逻辑异或XOR

异或XOR用得比较少。

【例子】查询员工表 employees 中部门ID department_id 为 50 但月工资 salary 大于 5000,和部门ID department_id 不为 50 但月工资 salary 小于 5000的员工的 employee_idlast_namesalarydepartment_id 信息。

SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE department_id = 50 XOR salary < 5000;

查询结果:

image-20220627104244621

【注意】

  • AND的优先级高于OR。

二、 位运算符

MySQL中有6种位运算符:

运算符作用
&按位与 (位AND)
|按位或 (位OR)
^按位异或 (位XOR)
~按位取反
>>按位右移
<<按位左移

【例子1】

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

查询结果:

image-20220627105722620

至于为什么得数是这样,把上面的十进制数转化为二进制数,按位操作即可。如下图所示:

image-20220627105857431

【例子2】

SELECT 4 << 1, 8 >> 1
FROM DUAL;

查询结果:

image-20220627110237475

其实,位运算符无论在MySQL还是在其他编程语言中都用得比较少。按我个人的经验来说,用得最多的就是最下面两行的 <<>> ,按位右移就表示二进制数除以2;而按位左移就表示二进制数乘2。在Java的集合源码中的数组扩容源码曾经看到过这两个符号的身影,它们能够加快程序运行的效率。

三、 运算符的优先级

运算符之间是有优先级的,不同运算符之间的优先级如下表所示:数字越大,优先级越高。

image-20220627104651043

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卡皮巴拉不躺平

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

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

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

打赏作者

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

抵扣说明:

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

余额充值