美文网首页
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