美文网首页
Mysql第七章 - 数据过滤高级筛选

Mysql第七章 - 数据过滤高级筛选

作者: 足__迹 | 来源:发表于2024-03-18 13:47 被阅读0次

    组合Where子句

    为了进行更强的过滤控制,MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用

    操作符

    AND操作符

    可使用AND操作符给WHERE子句附加条件,AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。

    举例:查询年龄在13到18之间数据
    输入:

    SELECT * FROM Test.student s WHERE s.age <18 AND s.age >13

    输出:


    image.png

    OR 操作符

    OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行

    举例:查询满足 大于18和小于15的值
    输入:

    SELECT * FROM Test.student s WHERE s.age >18 OR s.age <15

    输出:


    image.png
    计算次序

    基础数据:

    • 举例:查询数值小于等于15且姓名叫“王一”
      输入:SELECT * FROM Test.student s WHERE s.age >15 or s.age =15 AND s.name ='王一'

      输出: image.png

    分析:上面的结果,查询出的信息中存在姓名不等于“王一”的,过滤未生效,原因在于计算次序,SQL语句在处理“OR”操作符前,优先处理“AND”语句,上面的语句理解【获取姓名为王一,且年龄等于15岁,或者 年龄大于15对的所有数据】

    • 举例:使用括号,查询数值小于等于15且姓名叫“王一”
      输入:SELECT * FROM Test.student s WHERE (s.age =15 or s.age >15) AND s.name ='王一'

      输出: image.png
      分析:这条SELECT语句与前一条的唯一差别是,这条语句中,前两个条件用圆括号括了起来。因为圆括号具有较AND或OR操作符高的计算次序,DBMS首先过滤圆括号内的OR条件

    IN操作符

    圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。

    • 举例:
      输入1:SELECT * FROM Test.student s WHERE s.age =15 or s.age >20
      输入2:SELECT * FROM Test.student s WHERE s.age IN (15,20)

      输出: image.png
      分析:上面两条结束是相同的,使用IN优点

    1.在使用长的合法选项清单时,IN操作符的语法更清楚且更直观
    2.在使用IN时,计算的次序更容易管理(因为使用的操作符更少
    3.IN操作符一般比OR操作符清单执行更快
    4.IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句

    NOT操作符

    Where 子句中NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件

    注释:

    MySQL中的NOT MySQL支持使用NOT对IN、BETWEEN和EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。

    • 举例1:
      分析:获取年龄不等于15和10的数据
      输入:SELECT * FROM Test.student s WHERE s.age NOT IN (15,20)

      输出: image.png
    • 举例2:
      输入:SELECT * FROM Test.student s WHERE s.age NOT BETWEEN 15 AND 20

      输出: image.png

    相关文章

      网友评论

          本文标题:Mysql第七章 - 数据过滤高级筛选

          本文链接:https://www.haomeiwen.com/subject/wclymdtx.html