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一起使用