文章目录 1. 查询出工资大于`1000`的所有雇员信息. 2. 查询出姓名是Smith的雇员信息 3. 查询出工资在1000~1500之间的所有非销售人员的编号、姓名、职位、工资 4. 查询出所有不是办事员(CLERK)的员工信息 4. 查询所有是办事员的员工信息 5. 查询出职位是办事员(CLERK)或销售人员(SALESMAN)的信息 6. 查询出工资在1000~1500(包含有 1000 和 1500)的所有雇员信息
SELECT子句来控制可以显示的列信息。但是在很多的情况下可能并不需要查询出全部的数据,需要对要使用的数据行进行筛选,此时就可以采用限定查询,也就是说限定查询主要是控制行的。 限定查询的语法如下:
③SELECT [ DISTINCT ] * | 列名称 [ 别名] , 列名称 [ 别名] , . . . | 数据计算
①FROM 数据表 [ 别名]
②[ WHERE 限定条件( s) ] ;
在进行限定查询的时候首先还是需要根据FROM.确定要使用的数据来源,而后利用一些条件(关系运算),从所有的数据行里面筛选出从而实现最终的数据行的筛查,如果要是有多个条件进行判断也可以利用逻辑运算(与操作、或操作、非操作)进行整合: 在WHERE子句里面常用的几种判断符:关系运算(>、<、>=、<=、=、<>、!=)BETWEEN…AND、IN、LIKE、IS NULL
1. 查询出工资大于1000
的所有雇员信息.
现在需要设置的是一个条件,也就是说这个之后只有满足此条件之后才可以显示对应的数据行信息:
select *
from emp
where sal> 1000 ;
2. 查询出姓名是Smith的雇员信息
在Oracle中数据内容是区分大小写的 ename字段表示的是员工姓名,那么在ename设置对应的条件:
select *
from emp
where ename= 'SMITH' ;
如果小写就查询不出:
3. 查询出工资在1000~1500之间的所有非销售人员的编号、姓名、职位、工资
工资大于等于1000: sal>=1000;
工资小于等于1500: sal<=1500;
职位是非销售:job!='SALESMAN';
现在为止只有三个条件同时满足了才可以显示出对应的信息内容,所以使用AND
进行操作连接
select empno, ename, job, sal
from emp
where sal>= 1000 and sal<= 1500 and job!= 'SALESMAN' ;
4. 查询出所有不是办事员(CLERK)的员工信息
select *
from emp
where job<> 'CLERK'
select *
from emp
where job!= 'CLERK' ;
4. 查询所有是办事员的员工信息
job!='CLERK'
表示不是办事员,加上 not
取反就是办事员了
select *
from emp
where not job!= 'CLERK' ;
select *
from emp
where job= 'CLERK' ;
虽然两个查询结果是相同的,但是第一个查询的时间复杂度会高 ,因为做了关系运算和逻辑运算 ,而第二个查询只做了一个关系运算 。
5. 查询出职位是办事员(CLERK)或销售人员(SALESMAN)的信息
这个时候依然要采用两个判断条件: job='CLERK'、job='SALESMAN'
,这两个条件有一个满足就可以,所以使用 or
select *
from emp
where job= 'CLERK' or job= 'SALESMAN' ;
那么除了以上的这些基础的运算符之外,在进行限定查询的时候还可以使用以下的几种运算符:
范围查询:BETWEEN 最小值... AND 最大值;
6. 查询出工资在1000~1500(包含有 1000 和 1500)的所有雇员信息
select *
from emp
where sal>= 1000 and sal<= 1500 ;
select *
from emp
where sal between 1000 and 1500 ;
如果这个时候采用的是两个关系运算进行处理,那么要进行两次的筛选运算, 而如果使用了BETWEEN…AND则使用一次运算,所以性能会更好。