条件查询
首先这是我的大表
1.语法格式:
select 字段1,字段2…… from 表名 where 条件;
条件可以有:
(1) 等于=
查询薪资等于800的员工姓名和员工编号
select ename,empno from emp where sal=800;
(2)不等于!=或者用<>
查询薪资不等于800的员工姓名和员工编号
select ename,empno from emp where sal!=800;
select ename,empno from emp where sal<>800;
(3) <小于
查询薪资小于800的员工姓名和员工编号
select ename,empno from emp where sal<800;
(4) <=小于等于
查询薪资小于等于2000的员工姓名和员工编号
select ename,empno from emp where sal<=2000;
(5)大于>,大于等于>=同(3)和(4)
(6)之间between……and……
查询薪资在2000和5000之间的员工的姓名和编号
select ename,empno from emp where sal between 2000 and 5000;
注意:使用between……and……的时候必须遵循左小右大的原则
(7) is null / is not null
查询补助为null的员工的姓名和编号
select ename,empno from emp where sal is null;
select ename,empno from emp where comm is not null;
(8) and并且 / or或者
查询工作岗位是MANAGER并且补助为null的员工的姓名和编号
select ename,empno from emp where job = ‘MANAGER’ and comm is null;
查询工作岗位是MANAGER或者补助为null的员工的姓名和编号
select ename,empno from emp where job = ‘MANAGER’ or comm is null;
and和or同时出现的话,优先级问题:
and的优先级比or高。
例如:查询工资大于2500,并且部门编号为10或者20的员工信息
如果不加括号,写成:
select * from emp where sal > 2500 and deptno = 10 or deptno = 20;
就会先执行寻找工资大于2500和部门编号为10的员工信息,然后再去找部门编号为20的员工信息。如下图:
而实际上我们想找的是“工资大于2500,并且部门编号为10或者20的员工”,所以需要加括号。
select * from emp where sal > 2500 and (deptno = 10 or deptno = 20);
结果如下:
(9) in包含 / not in 不包含
in包含相当于or
查询工作岗位是MANAGER和SALESMAN的员工
select * from emp where job in (‘MANAGER’,‘SALESMAN’);
注意:in不是一个区间,后面跟的是具体的值
查询薪资是800和5000的员工信息
select * from emp where sal in (800,5000);
not in 不在这几个值当中的数据
select * from emp where sal not in (3000,4000,2000);