逻辑运算符
在C/C++、java语言的 if语句 中,当有 多个条件 时,要用到 逻辑运算
在sql中的多条件查询也与之类似,要用到 逻辑运算符,如下:
- 与:and,查询结果同时满足多个条件,优先级 高
- 或:or,查询结果至少满足一个条件,优先级 低
语法:
select * from 表名 where 列名 [比较运算符] 值 [逻辑运算符] 列名 [比较运算符] 值
and
查询工资大于1500,并且job是MANAGER的记录
select * from emp where sal>1500 and job='MANAGER'
查询范围
例子:查询工资在800至3000的员工
select * from emp where 800<=sal and sal<=3000
or
查询工资大于2000,或者奖金大于等于300的
SELECT * FROM emp WHERE sal>2000 OR comm>=300查询 没有奖金 的员工信息
select * from emp where comm is null or comm=0查询 有奖金 的员工信息
select * from emp where comm is not null and comm<>0查询 job是salesman,或者 工资大于3000的 记录
SELECT * FROM emp WHERE job='salesman' OR sal >3000
查询job是SALESMAN或者MANAGER,并且薪资大于1500的员工信息
错误写法:
select * from emp where job='SALESMAN' OR JOB='MANAGER' AND 1500<SAL
正确写法:
-- and相当于 乘除,优先级高;or相当于 加减,优先级低
select * from emp where (job='salesman' or job='manager') and sal>1500
相当于:
1 + 4 的结果,乘以 5
0+1 * 5 -- 结果正确,但过程错误
(0+1) * 5
练习
找出部门10 中的经理(MANAGER)和部门20 中的普通员工(CLERK)
找出部门10 中既不是MANAGER也不是CLERK,而且工资大于等于2000 的员工
找出有奖金的员工的不同工作
找出没有奖金或者奖金低于500 的员工,老员工在前面
显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
查询出工资大于等于1600,小于等于3000的员工,工资多的在前面