Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103635857
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-03 23:29:39

作者:Builder.com 来源:

 

标量子查询的引入是 Oracle9i中最显著的一个变化。以前 Oracle 允许在 SQL 语句的 FROM 子句中使用 SQL 子查询,Oracle9i扩展了这一功能,允许在 SELECT 子句中使用 SQL 子查询。

例如下面的这段代码。注意嵌入在外层SELECT子句和FROM子句中的SELECT语句。

Select
   (select max(salary) from emp) highest_salary,
   emp_name,
   (select avg(bonus) from commission) avg_commission,
   dept_name
from
   emp,
   (select dept_name from dept where dept = 'finance')
;

从这个例子中我们可以看到 Oracle 允许在任何 SQL 语句的 SELECT 子句中包含单行子查询。这一功能在一些麻烦的查询中会很有用处,这一特点值得 Oracle9i开发者注意。

标量子查询也能用于数据操纵语言(DML)。看下面的例子,在 INSERT 语句中包含有一个子查询:

insert into
   Customer
(name, max_credit)
values
    ('Sam', select max(credit) from credit_table where name = 'SAM');

从这里我们可以看出标量子查询对于提高 INSERT 和 UPDATE 语句的效率可能会很有帮助,因为如果不用标量子查询的话,就必须在WHERE子句中使用子查询才能得到所需的数据。


本文作者:Donald Burleson是有23年经验的数据库管理员,他出版过14本数据库专著,发表论文达100余篇。Donald Burleson是Oracle Internals的主编和Burleson Oracle Consulting的总裁。
阅读(396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~