有时对where的要筛选的列不止一个时,那么就用到了and操作符和or操作符,and操作符顾名思义的意思是”并且“,而or操作符的意思是"或者"。
比如以部门员工表为例
查询部门编号为d001并且入职日期为 1985-02-02的员工编号,那么就要用到and操作符
select emp_no from dept_emp where dept_no='d001' and from_date='1985-02-02';
那如果是查询部门编号为d001或者入职日期为 1985-02-02的员工编号,这时就要用到or操作符
select emp_no from dept_emp where dept_no='d001' or from_date='1985-02-02';
where可以包含任意数目的and和or操作符,允许两者结合进行复杂和高级的过滤。但如果两者都存在时,and操作符的计算次序会更高
比如查询部门d001或者或部门d002入职时间为1985-02-02的信息
可能错误地写成
select * from dept_emp where dept_no='d001' or dept_no='d002' and from_date='1985-02-02';
此时的查询结果就变成这样,这就是由于and操作符的计算次序更高造成的
更改为 or操作符的前后加上()就好了
select * from dept_emp where (dept_no='d001' or dept_no='d002' ) and from_date='1985-02-02';