with as语法
相当于建了个临时表 ,或者sql的别命名

with
tmp1 as(select * from aa where id="001"),
tmp2 as(select * from bb where id="001"),
tmp3 as(select* from cc where id="001"),
...select *from tmp1 ,  tmp2,tmp3 ... where tmp1.id=tmp2.id=tmp3.id='001'  ;
--相当于
create table  tmp1  as  select * from aacreate table  tmp2  as  select * from bbcreate table  tmp3  as  select * from ccselect * from tmp1  ,tmp2,tmp3  where tmp1.id=tmp2.id=tmp3.id='001'  ;

如: aa表数据如下,bb,cc表数据跟aa表一样

查询结果如下

注意:如果没有条件管控,查询结果为笛卡尔积

with
tmp1 as(select * from aa),
tmp2 as(select * from bb),
tmp3 as(select* from cc),
...select *from tmp1 ,  tmp2,tmp3 ...;
--相当于create table  tmp1  as  select * from aacreate table  tmp2  as  select * from bbcreate table  tmp3  as  select * from ccselect * from tmp1  ,tmp2,tmp3 ;

结果也就是笛卡尔积(比如  aa 8条数据,bb8调数据,cc8条数据,则总共8*8*8=512条数据)

如下:

向一张表插入数据的 with as 用法:

insert into table2
withs1 as (select rownum c1 from dual connect by rownum <= 10),s2 as (select rownum c2 from dual connect by rownum <= 10)
select a.c1, b.c2 from s1 a, s2 b where...;
同样 需要有关联条件,不然结果任会是笛卡尔积
with as 相当于虚拟视图.
with as短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个sql片断,该sql片断会被整个sql语句所用到.有
的时候,是为了让 sql 语句的可读性更高些,也有可能是在 union all 的不同部分,作为提供数据的部分。
特别对于 union all 比较有用.因为 union all的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用 with as短语,则只要执行一遍即可。如果 with as短语所定义的表名被调用两次以上,则优化器会自动将 with as短语所获取的数据放入一个temp表里,如果只是被调用一次,则不会。而提示materialize 则是强制将 with as短语里的数据放入一个全局临时表里.很多查询通过这种方法都可以提高速度。with as优点
增加了 sql的易读性,如果构造了多个子查询,结构会更清晰;
更重要的是:"一次分析,多次使用”,这也是为什么会提供性能的地方,达到了"少读”的目标

oracle with as用法相关推荐

  1. ORACLE的基础用法

    ORACLE的基础用法 转 自:http://blog.163.com/kelly_19831017/blog/static/6196787020083133348873/ sqlplus sys/o ...

  2. 常见Oracle HINT的用法

    1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...

  3. LTRIM、RTRIM和TRIM在ORACLE中的用法:

    LTRIM.RTRIM和TRIM在ORACLE中的用法: 1.LTRIM(C1,C2) 其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVE ...

  4. oracle 实例用法,Oracle merge into用法以及相关例子示例

    以下的文章主要是对Oracle merge into用法以及相关例子的介绍,首先我们以Oracle 9I中加入MERGE入手,以下就是文章的具体内容的分析,希望你浏览完之后会给你带来一些帮助在此方面. ...

  5. oracle10 数据库审计,Oracle数据库审计用法实例

    本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的.通过举例的方式来说明ORACLE审计的用法.ORACLE的审计可以从语句级.对象 本节是从Oracle METALINK ...

  6. ORACLE 中ROWNUM用法总结!

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  7. oracle中何时会用到join,Oracle中join用法的演示

    以下的文章主要介绍的是Oracle中join用法,如果你是其方面的新手,对Oracle中oin的实际用法很感兴趣,但是却找不到一些资料去对其进行更深入的了解的话,你不妨浏览以下的文章对其进行了解. O ...

  8. 常见 Oracle HINT 的用法

    Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. Oracle 19c HINT  Comments https://docs.ora ...

  9. oracle别名as用法

    oracle别名as用法 1.在oracle中as的作用主要是为表中的字段添加别名.如下图 2.在命名别名的时候也可以区分大小写,不过要加双引号"",如果不加双引号只是首字母大写的 ...

  10. oracle中using用法,Oracle中Using用法

    Oracle中Using用法 1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数 ...

最新文章

  1. unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
  2. linux mint 13 input method of chinese
  3. Oracle安装步骤及PL/SQL Developer连接数据库
  4. 决定系数R2真的可靠吗?
  5. 好好珍惜今生,不要期待来世……
  6. 源码安装zabbix遇到的报错集锦
  7. JavaSE基础知识(6)—异常和异常处理
  8. ocx控件 postmessage消息会消失_实战经验:如何检测CMFCTabCtrl控件标签页切换事件...
  9. (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务
  10. 喜庆红色主题新年春节晚会年会背景素材(PSD分层格式)
  11. Mint-UI组件 MessageBox为prompt 添加判断条件
  12. 计算机组成原理r型指令logisim实现_全国计算机二级MS office选择题增分速记宝典!...
  13. 2021 年 GitHub 最佳开源软件榜单
  14. Linux内核编程的特点
  15. 《Spring实战》学习笔记-第五章:构建Spring web应用
  16. vue-cli首页加载速度慢优化vender+vue预加载
  17. C语言基础 输出月份名 问题
  18. 为什么苹果蓝牙耳机连上还是公放_高版本AirPods无线蓝牙耳机二代、三代开团啦!...
  19. 程序员申请加班调休被HR拒绝:996是行规,不想加班就趁早走人!
  20. 比尔盖茨、贝佐斯、扎克伯格-硅谷大佬的书单

热门文章

  1. 特斯拉电动车电池组电路结构
  2. T3054 高精度练习-文件操作 codevs
  3. git push错误,如何回滚
  4. 防止DDOS攻击的策略
  5. 柠檬被虐待了 · 404设计#1
  6. 记录下server的配置
  7. 丰田发布“大眼萌”机器人,只有手掌大小!
  8. html学习基础(一)
  9. Java成神之路(二十六)Hibernate
  10. 马斯克“超级高铁”成功测速355km|h,不过仅比我国“复兴号”快5km|h