当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle通用函数分组函数子查询(三)
发布时间:2010/9/10 14:46:54 来源:www.xue.net 编辑:城市总裁吧

  in 的用法:

  继续引用上面的例子

  “2) select * from T1 where T1.a in (select T2.a from T2) ”

  这里的“in”后面括号里的语句搜索出来的字段的内容一定要相对应,一般来说,T1和T2这两个表的a字段表达的意义应该是一样的,否则这样查没什么意义。

  打个比方:T1,T2表都有一个字段,表示工单号,但是T1表示工单号的字段名叫“ticketid”,T2则为“id”,但是其表达的意义是一样的,而且数据格式也是一样的。这时,用 2)的写法就可以这样:

  “select * from T1 where T1.ticketid in (select T2.id from T2) ”

  EXISTS操作符

  EXISTS 操作符检查在子查询中是否存在满足条件的行

  - 如果在子查询中存在满足条件的行:

  – 不在子查询中继续查找

  – 条件返回TRUE

  - 如果在子查询中不存在满足条件的行:

  – 条件返回FALSE

  – 继续在子查询中查找

  相关子查询

  相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。子查询使用了主查询中的列。

  SELECT  column1, column2, ...

  FROM  table1 outer

  WHERE columnk operator (SELECT  colum1, colum2

  FROM  table2

  WHERE expr= outer.expr);

  相关更新

  使用相关子查询依据一个表中的数据更新另一个表的数据。

  UPDATE  table1 alias1

  SET  column = (SELECT  expression

  FROM  table2  alias2

  WHERE  alias1.column = alias2.column);

  相关删除

  使用相关子查询依据一个表中的数据删除另一个表的数据。

  DELETE FROM  table1 alias1

  WHERE  column operator (SELECT  expression

  FROM  table2 alias2

  WHERE alias1.column = alias2.column);

  WITH子句

  - 使用WITH子句,可以避免在SELECT语句中重复书写相同的语句块

  - WITH子句将该子句中的语句块执行一次,并存储到用户的临时表空间中

  - 使用WITH子句可以提高查询效率

  我们可以使用WITH  Clause来定义一个query   block,然后在SELECT   statement的其它地方使用这个query   block。如果在一个很复杂的 Query 里,我们必须重复地使用某个 subquery,那么使用WITH   Clause可以降低Query的复杂度以及提高 performance。因为WITH   Clause 所读出的资料会暂存在User的temporary   tablespace中。

  WITH子句应用举例:

  WITH

  dept_costs AS (SELECT  d.department_name, SUM(e.salary) AS dept_total

  FROM  employees e, departments d

  WHERE  e.department_id = d.department_id

  GROUP BY  d.department_name),

  avg_cost  AS (SELECT  SUM(dept_total)/COUNT(*) AS dept_avg

  FROM  dept_costs)

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved