SQL高级数据过滤

AND OR
需求:我们希望从students表中,找到学生的名字和成绩,而且要求这些学生来自于1班或者三班,并且这些学生的成绩一定要大于90

SELECT name,score
FROM students
WHERE class_id=1 or class_id=3
AND score>90

在这里插入图片描述AND表示的是同时满足两个条件
OR表示只要满足一个条件就可以

注意:
提示:在WHERE子句中使用圆括号
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。

因此上面的代码可以改成:

SELECT name,score
FROM students
WHERE (class_id=1 or class_id=3)
AND score>90

IN
IN相当于OR
需求:找到找到成绩为90和88的学生姓名
代码:

SELECT name,score
FROM students
WHERE score IN(90,88);

在这里插入图片描述
IN也可以相当于=的作用,比方说找成绩为90的学生
代码:

SELECT name,score
FROM students
WHERE score IN(90);

在这里插入图片描述IN的优势:

  • 在有很多合法选项时,IN操作符的语法更清楚,更直观。
  • 在与其他AND和OR操作符组合使用IN时,求值顺序更容易管理。
  • IN操作符一般比一组OR操作符执行得更快(在上面这个合法选项很少的例子中,你看不出性能差异)。
  • IN的最大优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。第11课会对此进行详细介绍。

NOT
取反操作,一般和IN一起使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值