`

oracle with语句详解

阅读更多
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系统表详解(中文).docx

    ### Oracle系统表详解 Oracle数据库提供了大量的系统表来帮助管理员和开发者更好地理解并管理数据库环境。这些表存储了关于数据库对象的重要信息,如用户、表空间、段等。本文将详细介绍部分重要的Oracle系统表,...

    Orcle的SQLplus语句详解.doc

    Oracle SQLplus 语句详解 Oracle SQLplus 是 Oracle 数据库管理系统中的一款命令行工具,用于执行 SQL 语句,查看数据库对象的结构,执行事务处理等。下面我们将对 Oracle SQLplus 的使用、语句、命令、函数等进行...

    oracle数据库startwith用法

    ### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...

    Oracle 锁机制问题详解

    ### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...

    Oracle万能查询语句

    ### Oracle万能查询语句详解 #### 一、概述 在Oracle数据库中,查询语句是数据检索的核心工具。本文将详细介绍一个复杂的Oracle查询语句,该语句涉及多个表的连接、序列、存储过程以及多表查询等相关知识点。通过...

    Oracle SQL语句分页问题

    ### Oracle SQL语句分页问题详解 #### 一、引言 在数据库查询操作中,分页是一项常用且重要的功能,特别是在数据量较大的情况下。它能够有效地提高用户体验,并减轻服务器负担。本文将针对Oracle数据库中的SQL分页...

    Oracle数据库知识详解

    ### Oracle数据库知识详解 #### 一、Oracle数据库概述 **Oracle数据库**是一种广泛使用的多模型数据库管理系统,由美国Oracle公司开发。它支持多种操作系统,并且能够处理大量的并发用户请求和事务处理,尤其适合...

    oracle 常见语句简析

    ### Oracle常见语句详解 #### 一、连接与断开数据库 在操作Oracle数据库时,首先需要通过SQL*Plus工具连接到数据库。连接命令的基本格式为`sqlplus 用户名/密码@实例名`,例如`sqlplus scott/orcl@orcl`用于以scott...

    Oracle操作语句集锦

    ### Oracle操作语句集锦详解 #### 一、Oracle 命令行工具与基本语法 **1. 启动 SQLPlus:** ```bash sqlplus /nolog ``` 此命令用于启动 SQLPlus 工具,不进行任何登录操作。 **2. 连接到数据库:** ```bash conn...

    Oracle数据库语句大全.pdf

    ### Oracle数据库语句大全知识点详解 #### 一、完整性约束 在Oracle数据库中,为了确保数据的完整性和一致性,提供了多种约束机制。这些约束机制主要包括: - **NOT NULL(非空约束)**:用于禁止在指定列中插入...

    Oracle 基本建表语句集

    ### Oracle基本建表语句集知识点详解 #### 创建用户 - **语法**: ```sql CREATE USER <用户名> IDENTIFIED BY <密码> DEFAULT TABLESPACE <表空间名> TEMPORARY TABLESPACE <临时表空间名>; GRANT <角色>,<角色...

    Oracle 中的视图详解.pdf

    ### Oracle中的视图详解 #### 视图概述 在Oracle数据库中,视图是一种非常重要的概念,它实质上是一条预定义的SQL查询语句,用于展示一个或多个表(或视图)中的数据。视图可以被视为一个虚拟的表,它的数据是在...

    Oracle常用sql语句

    ### Oracle常用SQL语句详解 #### 数据控制语句(DML) **1. INSERT语句** 插入数据到表中的操作通过`INSERT`语句实现。基本语法如下: ``` INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...)...

    oracle 查询语句

    ### Oracle查询、删除、更新与授权语句详解 #### 一、Oracle数据库用户管理操作 在Oracle数据库中,用户管理是非常重要的一个环节,涉及到用户的创建、权限分配、资源限制等多方面内容。以下是对给定内容中涉及的...

    Oracle物化视图应用详解

    同时,物化视图对应用程序透明,不影响SQL语句的正确性。然而,它们需要额外的存储空间,并且需要定期维护以保持与基表同步。 总之,Oracle物化视图是一个强大的工具,通过预计算和存储查询结果,提高了查询效率,...

    oracle高级语句

    ### Oracle高级语句详解 #### 一、With临时表 **功能概述:** `WITH` 子句在SQL中提供了一种定义临时结果集的方法,这些结果集可以在后续的查询中重复使用,从而提高查询效率。`WITH` 临时表在复杂的查询中尤其...

    oracle视图详解

    Oracle 视图详解 Oracle 视图(View)是一种逻辑表,基于一个或多个实际表,它不占用物理空间,只存在逻辑定义。每次使用视图时,都是重新执行 SQL 语句。视图可以从一个或多个实际表中获得,这些表的数据存放在...

    Oracle start with.connect by prior子句实现递归查询

    #### `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 参数详解 #### 一、概述 在Oracle数据库管理中,`service_name`是一个重要的参数,它用于标识数据库实例所提供的服务名称。通过设置正确的`service_name`,可以确保客户端应用程序能够...

Global site tag (gtag.js) - Google Analytics