Oracle函数学习(单表查询和子查询)

时间:2022-06-20
本文章向大家介绍Oracle函数学习(单表查询和子查询),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

–单表查询: –当需要的数据在一张表中,考虑使用单表查询 –多表联合查询: –当需要查询的数据分布在多张表中,考虑使用多表联合 –子查询学习: –使用时机:当查询的筛选条件不明确时,考虑使用子查询。 –单行子查询 –多行子查询

–单行子查询:

–使用时机:筛选条件不明确需要执行一次查询,并且查询结果一个字段并值只有一个 –注意:where子句中允许出现查询语句,该查询语句称为子查询 –使用:select 内容 from 表名 where 字段名 比较运算符 子查询语句 –查询所有比雇员“CLARK”工资高的员工信息 select * from emp where sal>(select sal from emp where ename =‘CLARK’) –查询工资高于平均工资的员工的名字和工资 select ename,sal from emp where sal>(select avg(sal) from emp ) –查询和soctt属于同一部门且工资比他低的员工资料 select * from emp where deptno=(select deptno from emp where ename=‘SCOTT’) and sal<(select sal from emp where ename=‘SCOTT’) –查询工资最高的员工资料 select * from emp where sal=(select max(sal) from emp) –查询职务和scott相同,雇佣时间早的员工信息 select * from emp where job=(select job from emp where ename=‘SCOTT’) and hiredate <(select hiredate from emp where ename=‘SCOTT’) –查询工资比scott高或者雇佣时间早的员工编号和名字 select empno,ename from emp where job=(select job from emp where ename=‘SCOTT’) or hiredate <(select hiredate from emp where ename=‘SCOTT’)

----多行子查询:

 --使用:子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实就是使用关键字
   --关键字1:any 任意
        --select 内容 from 表名 where 字段名 比较运算符 any 子查询语句
   --关键字2:all 所有
        --select 内容 from 表名 where 字段名 比较运算符 all 子查询语句
   --关键字3:in 表示任意存在,相当于 = any  
        --select 内容 from 表名 where 字段名 in 子查询语句   
        --select 内容 from 表名 where 字段名 not in 子查询语句   
--查询工资高于任意一个CLERK的所有员工信息
 select * from  emp where sal> any (select sal from emp where job='CLERK')
--查询工资高于所有SALESMAN的员工信息
select * from emp where sal> all (select sal from emp where job='SALESMAN')
--查询部门20中同部门10的雇员工作一样的雇员信息
select job from emp where deptno=10
select *from emp where (job='MANAGER' or job='PRESIDENT' or job='CLERK') and deptno=20
select * from emp where job  in (select job from emp where deptno=10) and deptno=20
 select * from emp where job = any (select job from emp where deptno=10) and deptno=20