- 浏览: 788151 次
- 性别:
- 来自: 广州
文章分类
最新评论
oracle with语句详解 转
在oracle中,select 查询语句,可以使用with,就是一个子查询,oracle 会把子查询的结果放到临时表中,可以反复使用
例子:注意,这是sql语句,不是pl/sql语句, 可以直接放到jdbc执行的
-------------------------------------------------------------------------------------------------------------------
首先看一个例子:
with
--入库信息,利用子查询,将数据预处理一次,这样数据就很少了, 下面可以很快的反复查rkxx,
rkxx as (select sz,zt,sum(se) se --税种,状态,税额
from zsxx
where rkrq between '2007-02' and '2007-06' --条件,统计日期
group by sz,zt
)
select sk.sz,sk.se,fk.se,znj.se
from (select sz,sum(se) se from rkxx --这里可以直接查询with子查询的结果rkxx
where zt='01'
group by sz) sk,--税款
(select sz,sum(se) se from rkxx
where zt='02'
group by sz) fk,--罚款
(select sz,sum(se) se from rkxx
where zt='03
group by sz) znj --滞纳金
where sk.sz=fk.sz
and sk.sz=znj.sz
with 执行原理与生命周期:
当查询中多次用到某一部分时,可以用with语句创建一个公共临时表。子查询存放在在内存临时表中,避免了重复解析,执行效率会提高不少。临时表在一次查询结束自动清除,而不是会话结束后清除。
with语法格式:
一般语法格式:
with
别名1 as (sql语句1),
别名2 as (sql语句2),
……
别名n as (sql语句n)
select 字段1,字段2…… 字段n
from 别名1,别名2……,别名3
Oracle with语句的例子:
SQL> WITH
Q1 AS (SELECT 3 + 5 S FROM DUAL),
Q2 AS (SELECT 3 * 5 M FROM DUAL),
Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2)
SELECT * FROM Q3;
输出结果:
S M S+M S*M
---------- ---------- ---------- ----------
8 15 23 120
-----------------------------------------------------------------------------------------------------------------------
总结:
经过with预先处理好数据,然后再在处理好的数据上做查询分析,不用再访问原始表, 这样效率是很高的
注意,预先处理好的数据,一定要少, 可以把条件尽可能的加到with子查询中,这样后面的查询才会更快
在oracle中,select 查询语句,可以使用with,就是一个子查询,oracle 会把子查询的结果放到临时表中,可以反复使用
例子:注意,这是sql语句,不是pl/sql语句, 可以直接放到jdbc执行的
-------------------------------------------------------------------------------------------------------------------
首先看一个例子:
with
--入库信息,利用子查询,将数据预处理一次,这样数据就很少了, 下面可以很快的反复查rkxx,
rkxx as (select sz,zt,sum(se) se --税种,状态,税额
from zsxx
where rkrq between '2007-02' and '2007-06' --条件,统计日期
group by sz,zt
)
select sk.sz,sk.se,fk.se,znj.se
from (select sz,sum(se) se from rkxx --这里可以直接查询with子查询的结果rkxx
where zt='01'
group by sz) sk,--税款
(select sz,sum(se) se from rkxx
where zt='02'
group by sz) fk,--罚款
(select sz,sum(se) se from rkxx
where zt='03
group by sz) znj --滞纳金
where sk.sz=fk.sz
and sk.sz=znj.sz
with 执行原理与生命周期:
当查询中多次用到某一部分时,可以用with语句创建一个公共临时表。子查询存放在在内存临时表中,避免了重复解析,执行效率会提高不少。临时表在一次查询结束自动清除,而不是会话结束后清除。
with语法格式:
一般语法格式:
with
别名1 as (sql语句1),
别名2 as (sql语句2),
……
别名n as (sql语句n)
select 字段1,字段2…… 字段n
from 别名1,别名2……,别名3
Oracle with语句的例子:
SQL> WITH
Q1 AS (SELECT 3 + 5 S FROM DUAL),
Q2 AS (SELECT 3 * 5 M FROM DUAL),
Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2)
SELECT * FROM Q3;
输出结果:
S M S+M S*M
---------- ---------- ---------- ----------
8 15 23 120
-----------------------------------------------------------------------------------------------------------------------
总结:
经过with预先处理好数据,然后再在处理好的数据上做查询分析,不用再访问原始表, 这样效率是很高的
注意,预先处理好的数据,一定要少, 可以把条件尽可能的加到with子查询中,这样后面的查询才会更快
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1235Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数 RANK()
2013-04-11 00:05 1104RANK()既是一个聚合函数,也是一个分析函数 其具体的语法 ... -
oracle 分析函数
2013-04-09 23:25 1181分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1398BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1578--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1108表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1619About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8494转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2932insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30891. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2911LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6441ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1435I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5645用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1396Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1398Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2724RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3065空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1539我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1508闪回事务查询有别于闪回查询的特点有以下3个: (1) ...
相关推荐
### Oracle系统表详解 Oracle数据库提供了大量的系统表来帮助管理员和开发者更好地理解并管理数据库环境。这些表存储了关于数据库对象的重要信息,如用户、表空间、段等。本文将详细介绍部分重要的Oracle系统表,...
Oracle SQLplus 语句详解 Oracle SQLplus 是 Oracle 数据库管理系统中的一款命令行工具,用于执行 SQL 语句,查看数据库对象的结构,执行事务处理等。下面我们将对 Oracle SQLplus 的使用、语句、命令、函数等进行...
### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...
### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...
### Oracle万能查询语句详解 #### 一、概述 在Oracle数据库中,查询语句是数据检索的核心工具。本文将详细介绍一个复杂的Oracle查询语句,该语句涉及多个表的连接、序列、存储过程以及多表查询等相关知识点。通过...
### Oracle SQL语句分页问题详解 #### 一、引言 在数据库查询操作中,分页是一项常用且重要的功能,特别是在数据量较大的情况下。它能够有效地提高用户体验,并减轻服务器负担。本文将针对Oracle数据库中的SQL分页...
### Oracle数据库知识详解 #### 一、Oracle数据库概述 **Oracle数据库**是一种广泛使用的多模型数据库管理系统,由美国Oracle公司开发。它支持多种操作系统,并且能够处理大量的并发用户请求和事务处理,尤其适合...
### Oracle常见语句详解 #### 一、连接与断开数据库 在操作Oracle数据库时,首先需要通过SQL*Plus工具连接到数据库。连接命令的基本格式为`sqlplus 用户名/密码@实例名`,例如`sqlplus scott/orcl@orcl`用于以scott...
### Oracle操作语句集锦详解 #### 一、Oracle 命令行工具与基本语法 **1. 启动 SQLPlus:** ```bash sqlplus /nolog ``` 此命令用于启动 SQLPlus 工具,不进行任何登录操作。 **2. 连接到数据库:** ```bash conn...
### Oracle数据库语句大全知识点详解 #### 一、完整性约束 在Oracle数据库中,为了确保数据的完整性和一致性,提供了多种约束机制。这些约束机制主要包括: - **NOT NULL(非空约束)**:用于禁止在指定列中插入...
### Oracle基本建表语句集知识点详解 #### 创建用户 - **语法**: ```sql CREATE USER <用户名> IDENTIFIED BY <密码> DEFAULT TABLESPACE <表空间名> TEMPORARY TABLESPACE <临时表空间名>; GRANT <角色>,<角色...
### Oracle中的视图详解 #### 视图概述 在Oracle数据库中,视图是一种非常重要的概念,它实质上是一条预定义的SQL查询语句,用于展示一个或多个表(或视图)中的数据。视图可以被视为一个虚拟的表,它的数据是在...
### Oracle常用SQL语句详解 #### 数据控制语句(DML) **1. INSERT语句** 插入数据到表中的操作通过`INSERT`语句实现。基本语法如下: ``` INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...)...
### Oracle查询、删除、更新与授权语句详解 #### 一、Oracle数据库用户管理操作 在Oracle数据库中,用户管理是非常重要的一个环节,涉及到用户的创建、权限分配、资源限制等多方面内容。以下是对给定内容中涉及的...
同时,物化视图对应用程序透明,不影响SQL语句的正确性。然而,它们需要额外的存储空间,并且需要定期维护以保持与基表同步。 总之,Oracle物化视图是一个强大的工具,通过预计算和存储查询结果,提高了查询效率,...
### Oracle高级语句详解 #### 一、With临时表 **功能概述:** `WITH` 子句在SQL中提供了一种定义临时结果集的方法,这些结果集可以在后续的查询中重复使用,从而提高查询效率。`WITH` 临时表在复杂的查询中尤其...
Oracle 视图详解 Oracle 视图(View)是一种逻辑表,基于一个或多个实际表,它不占用物理空间,只存在逻辑定义。每次使用视图时,都是重新执行 SQL 语句。视图可以从一个或多个实际表中获得,这些表的数据存放在...
#### `Start With.Connect By Prior`语法详解 `Start With.Connect By Prior`的基本语法结构如下: ```sql SELECT * FROM START WITH CONNECT BY PRIOR <parent_column> = ; ``` 其中: - `<table_name>`:需要...
### Oracle Service_Name 参数详解 #### 一、概述 在Oracle数据库管理中,`service_name`是一个重要的参数,它用于标识数据库实例所提供的服务名称。通过设置正确的`service_name`,可以确保客户端应用程序能够...