oracle SQL with 子句

oracle SQL with  子句
with 子句是在oracle 9i release 2 中引入的。with 子句又叫做子查询构造语句。 可以用来给一个子查询块命名。该查询块的检索结果会被oracle 保存在用户的 临时表空间中,该命名块就像虚表或者内联视图一样。使用SQL with 子句可以 达到如下两个目的,一使复杂的sql 语句的可读性可理解性更高。二当在一个 sql 语句中需要多次使用到某个子查询的结果的时候,可以提升sql 语句的性能。
下面这个例子只是用来说明with  语句的语法和注意事项:
SQL> with emp as       
  2  ( select employee_id,first_name,last_name
  3    from employees)
  4  select employee_id,first_name,last_name
  5  from emp
  6  where employee_id = 100;
EMPLOYEE_ID FIRST_NAME           LAST_NAME
----------- -------------------- -------------------------
        100 Steven               King
with 子句只在同一个语句内有效。在另外一个语句中使用刚才用with子句创建的
查询命名块无效。
SQL> select employee_id,first_name,last_name
  2  from emp
  3  where employee_id = 100;
from emp
     *
ERROR at line 2:
ORA-00942: table or view does not exist
下面是一个关于使用with 带来可读性提高的例子。
这个查询的目的是找到employees 表中employee_id 编号存在的间隔。因为employee_id 是从100 开始编的,所有ids >99.
SQL> with all_ids as 
  2  (select level ids from (select max(employee_id) max_id
  3                      from employees)
  4   connect by level <= max_id)
  5   select ids 
  6   from all_ids
  7   where ids not in (select employee_id from employees)
  8   and ids > 99
  9   order by ids;
       IDS
----------
       207
       208
       209
employees 表中employee_id 存在以上3个编号是空缺的。
SQL> select * from employees 
  2  where employee_id = 207;
no rows selected
至于性能上提高的例子暂时举不出来。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-720814/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26110315/viewspace-720814/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值