Oracle子查询过程中值得注意的事项

数据库 Oracle
Oracle子查询的过程中有很多的事项是值得我们大家注意的,例如在先执行括号里的SQL语句,你的需要一层层的到外面 ,但是在内部里的查询只能执行一次,等相关内容的介绍。

我们都知道HAVING中我们可以用Oracle子查询 ,而且两个查询的语句的结果是可做集合操作的,如果你想知道HAVING中我们是如何使用Oracle子查询的?以及两个查询的语句的结果是可做集合的实际操作是如何进行的?以下的内容就有相关的答案。

1. 查询语句可以嵌套

 

例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

 

2. 何处可用Oracle子查询?

 

当查询条件是不确定的条件时

 

DML(insert, update,delete)语句里也可用子查询

 

HAVING里也可用子查询

 

3. 两个查询语句的结果可以做集合操作

 

例如:

 

并集UNION(去掉重复记录)

 

并集UNION ALL(不去掉重复记录)

 

10

 

J2EE @ zxw

差集MINUS,

 

交集INTERSECT

 

4. 子查询的注意事项

 

先执行括号里面的SQL语句,一层层到外面

 

内部查询只执行一次

 

如果里层的结果集返回多个,不能用= > < >= <=等比较符要用IN.

 

5. Oracle子查询的例子(1)

 

 

  1. SQL> select title,avg(salary) from s_emp   
  2. group by title Having avg(salary) =   
  3. (select min(avg(salary)) from s_emp   
  4. group by title);  

 

 

找到最低平均工资的职位名称和工资

 

子查询的例子(2)

 

Oracle子查询可以用父查询里的表名

 

这条SQL语句是对的:

 

 

  1. SQL>select cty_name from city where st_code in   
  2. (select st_code from state where st_name='TENNESSEE' and   
  3. city.cnt_code=state.cnt_code);  

 

 

说明:父查询调用子查询只执行一次.

 

6.取出结果集的80 到100的SQL语句

 

Oracle处理每个结果集只有一个ROWNUM字段标明它的逻辑位置,

 

并且只能 用ROWNUM<100, 不能用ROWNUM>80。

 

以下是经过分析后较好的两种Oracle取得结果集80到100间的SQL语句

 

( ID是唯一关键字的字段名 )

 

语句写法:

 

 

  1. SQL>select * from (   
  2. ( select rownum as numrow, c.* from (   
  3. select [field_name,...] 
    from table_name where 条件1 order by 条件2) c)   
  4. where numrow > 80 and numrow <= 100 )  

 

 

order by 条件3;

 

 以上的相关内容就是对Oracle子查询的介绍,望你能有所收获。

【编辑推荐】

  1. Oracle数据类型转换的实际应用方案
  2. Oracle 10g环境的搭建手册
  3. 在Oracle产品中的FAQ如何选着
  4. 在Oracle产品中的FAQ如何选着
  5. 在Oracle 学习中进行数据库查询
责任编辑:佚名 来源: 互联网
相关推荐

2009-07-06 15:06:20

ASP.NET开发程序

2010-04-15 16:54:31

Oracle存储过程

2010-05-14 17:12:53

MySQL数据库

2015-06-10 09:17:48

数据中心规划设计

2010-07-21 16:28:33

职场

2010-09-06 10:30:14

DB2数据库临时表

2015-06-23 15:48:41

Swift 2.0iOS9

2013-09-16 13:18:28

遗留系统系统迁移

2010-11-26 15:05:58

MySQL变量

2011-10-09 10:43:00

2015-10-08 09:25:05

比特币存储开源

2021-05-12 10:25:29

开发技能代码

2011-05-12 09:29:54

2017-02-21 13:20:02

SD-WAN软件定义网络广域网

2009-06-10 15:36:25

ubuntu netb开发过程

2011-05-19 14:29:50

Oracle存储语法

2010-10-29 16:33:45

ORACLE存储过程

2010-08-02 08:56:00

DB2数据库临时表

2010-07-15 14:47:05

Perl开发

2019-07-19 10:08:49

iOS应用系统
点赞
收藏

51CTO技术栈公众号