Oracle(五)--> 高级子查询(二)

一、相关子查询
相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询

例:若 employees 表中 employee_id 与 job_history 表中 employee_id 相同的数目不小于 2 ,输出这些相同 id 的员工的 employee_id , last_name 和其 job_id。
让表 employees 进入子查询,通过 employee_id 与 job_history 建立联系。
sql 语句与查询结果如下

二、EXISTS 关键字
   ·EXISTS 操作符检查在子查询中是否存在满足条件的行
   ·如果在子查询中存在满足条件的行:
     -- 不在子查询中继续查找
     -- 条件返回 TRUE
   ·如果在子查询中不存在满足条件的行:
     -- 条件返回 FALSE
     -- 继续在子查询中查找
例:

查询结果如下:

三、相关XX

1、相关更新
-- 使用相关子查询依据一个表中的数据更新另一个表的数据
1)建立一个新表

2)插入一列新的记录

3)为新列插入数据,数据必须一一对应

-- 此操作使得不同表的信息可以集中到一个表

2、相关删除 
-- 使用相关子查询依据一个表中的数据删除另一个表的数据
例:删除表 employees ,与 emp_history 表都有的数据
1)创建表 emp022 ,将 employees 表中 department_id 为 80,90 的数据添加进去

2)创建表 emp033 ,将 employees 表中 department_id 为 90 的添加进去

3)将 emp022 表中与 emp033 表数据重复的部分进行删除


四、WITH 子句
   1)使用 WITH 子句,可以避免在 SELECT 语句中重复书写相同的语句块;
   2)WITH 子句将该子句中的语句块执行一次并存储到用户的临时表空间中;
   3)使用 WITH 子句可以提高查询效率。

例:查询公司中工资比 Fay 高的员工的信息
不使用 with 子句:

使用 with 子句:

此例并不明显,但当数据量较大且查询相同部分时,使用 WITH 子句会大大提高查询效率。

例2:查询公司中各部门的总工资大于公司中各部门的平均总工资的部门信息

如果采取以前的查询方式,将会有很多的嵌套查询,使用 WITH 子句将大大简化查询,提高效率。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值