• 【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;
    
    • 1
    • 2
    • 3

    查询结果:

    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;
    
    • 1
    • 2
    • 3

    查询结果:

    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;
    
    • 1
    • 2
    • 3

    查询结果:

    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;
    
    • 1
    • 2
    • 3

    查询结果:

    image-20220627104244621

    【注意】

    • AND的优先级高于OR。

    二、 位运算符

    MySQL中有6种位运算符:

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

    【例子1】

    SELECT 12 & 5, 12 | 5, 12 ^ 5
    FROM DUAL;
    
    • 1
    • 2

    查询结果:

    image-20220627105722620

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

    image-20220627105857431

    【例子2】

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

    查询结果:

    image-20220627110237475

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

    三、 运算符的优先级

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

    image-20220627104651043

  • 相关阅读:
    【HarmonyOS】鸿蒙开发之Stage模型-应用配置文件——第4.2章
    猿创征文|工具百宝箱-代码编辑器-版本控制工具-终端神器-项目与事务跟踪工具-SFTP客户端
    【算法基础】TOPSIS法
    多线设置教程
    CSS 之 vertical-align的垂直方向居中对齐误解
    训练营第二十七天 | 491.递增子序列46.全排列47.全排列 II332.重新安排行程51. N皇后
    壳聚糖-聚乙二醇-巯基|巯基-PEG-壳聚糖|硅烷,丙烯酸酯,硫辛酸修饰壳聚糖
    python---socket套接字,粘包问题
    2024年华为OD机试真题-可以组成网络的服务器-Java-OD统一考试(C卷)
    高通USER版本不支持fastboot升级
  • 原文地址:https://blog.csdn.net/Sihang_Xie/article/details/125480206