oracle with as用法
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用法相关推荐
- ORACLE的基础用法
ORACLE的基础用法 转 自:http://blog.163.com/kelly_19831017/blog/static/6196787020083133348873/ sqlplus sys/o ...
- 常见Oracle HINT的用法
1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...
- LTRIM、RTRIM和TRIM在ORACLE中的用法:
LTRIM.RTRIM和TRIM在ORACLE中的用法: 1.LTRIM(C1,C2) 其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVE ...
- oracle 实例用法,Oracle merge into用法以及相关例子示例
以下的文章主要是对Oracle merge into用法以及相关例子的介绍,首先我们以Oracle 9I中加入MERGE入手,以下就是文章的具体内容的分析,希望你浏览完之后会给你带来一些帮助在此方面. ...
- oracle10 数据库审计,Oracle数据库审计用法实例
本节是从ORACLE METALINK的DOC:167293.1翻译整理而来的.通过举例的方式来说明ORACLE审计的用法.ORACLE的审计可以从语句级.对象 本节是从Oracle METALINK ...
- ORACLE 中ROWNUM用法总结!
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- oracle中何时会用到join,Oracle中join用法的演示
以下的文章主要介绍的是Oracle中join用法,如果你是其方面的新手,对Oracle中oin的实际用法很感兴趣,但是却找不到一些资料去对其进行更深入的了解的话,你不妨浏览以下的文章对其进行了解. O ...
- 常见 Oracle HINT 的用法
Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. Oracle 19c HINT Comments https://docs.ora ...
- oracle别名as用法
oracle别名as用法 1.在oracle中as的作用主要是为表中的字段添加别名.如下图 2.在命名别名的时候也可以区分大小写,不过要加双引号"",如果不加双引号只是首字母大写的 ...
- oracle中using用法,Oracle中Using用法
Oracle中Using用法 1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数 ...
最新文章
- unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
- linux mint 13 input method of chinese
- Oracle安装步骤及PL/SQL Developer连接数据库
- 决定系数R2真的可靠吗?
- 好好珍惜今生,不要期待来世……
- 源码安装zabbix遇到的报错集锦
- JavaSE基础知识(6)—异常和异常处理
- ocx控件 postmessage消息会消失_实战经验:如何检测CMFCTabCtrl控件标签页切换事件...
- (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务
- 喜庆红色主题新年春节晚会年会背景素材(PSD分层格式)
- Mint-UI组件 MessageBox为prompt 添加判断条件
- 计算机组成原理r型指令logisim实现_全国计算机二级MS office选择题增分速记宝典!...
- 2021 年 GitHub 最佳开源软件榜单
- Linux内核编程的特点
- 《Spring实战》学习笔记-第五章:构建Spring web应用
- vue-cli首页加载速度慢优化vender+vue预加载
- C语言基础 输出月份名 问题
- 为什么苹果蓝牙耳机连上还是公放_高版本AirPods无线蓝牙耳机二代、三代开团啦!...
- 程序员申请加班调休被HR拒绝:996是行规,不想加班就趁早走人!
- 比尔盖茨、贝佐斯、扎克伯格-硅谷大佬的书单