Oracle中子查询、分页查询、排序函数通俗理解

一、子查询
1、子查询在where子句中
(1)实例: 查找和SCOTT同职位的员工
思路分析:
1.和xx怎么样,与xx怎么样,比xx怎么样,大于,小于,等于,是,不是,为,等大范围过滤的条件:肯定要用到where
2.和SCOTT同职位 要用到where,SCOTT同职位?我们到现在还不知道SCOTT是啥子情况,先把SCOTT的情况查询出来,这就是子查询。
3.重点是后面的员工,我们最终要查询的是员工,而不是SCOTT同职位,所以是个主查询。
4.其实where条件过滤后面跟的就是实实在在的东西,
(1)如where sal > 100 100是实在存在的东西
(2)如 where job = SCOTT同职位, 因为我们需要知道SCOTT同职位 是实在存在的东西,但是我们现在真的不知道它是个啥,也就是说它不实在,那么就得查询出来,它是个啥,把它变成实在的东西。
select job from emp where ename = ‘SCOTT’;
5.因此,where前面的select查询里的东西是要上台面的,是主查询,跟在where后面的条件的东西必须是个实在的东西,如果不是,那就把它查询出来变成实在的东西,所以where后面需要通过查询变成实在的东西就是个子查询。
6. 主查询和子查询之间用 where job = 这样的语句连起来。

(2)SQL查询语句:
1.where后面的子查询
select job from emp where ename = ‘SCOTT’;
2.主查询 select
select ename,job from emp;
3.主查询和子查询结合
select ename,job from emp where job = (select job from emp where ename = ‘SCOTT’);
查询结果:
这里写图片描述
其实,3.中的SQL语句已经能够成功查询出结果了。但是请看下面第4.说明。

4.子查询就是个where过滤条件,已经固定。主查询中出现了job,子查询中也有job,二者要区分开来,不然
谁知道你这个job是主查询里要查询的job还是子查询中的job。
总结起来:子查询固定,主查询防止混淆,进行改善。
这样看起来,SQL语句结构更合理,舒适。e就相当于emp的一个实例一样,以后建议使用4,尽管3也是对的。

select e.ename,e.job from emp e where e.job = (select job from emp where ename = ‘SCOTT’);
查询结果:
这里写图片描述
(3)多子查询
查询出部门中有SALESMAN但职位不是SALESMAN的员工的信息:
子查询:select dept

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值