http://www.cnblogs.com/booolee/archive/2009/09/15/1566827.html
为了简化SQL语句,可以将语句分成若干个视图来操作,但是创建的试图将会作为对象保存在数据库中,但经常有一些语句只是临时使用,所以在sql-99规范中有了with as 语句,该语句实质上就是创建临时视图,来帮助你简化语句并使语句结构更清晰更容易阅读。
下面的测试中会用到3张表,courseresults(课程-学生-成绩表)、courses(课程表)、students(学生表),先给出建表语句:
create table COURSERESULTS
(
CID NUMBER,
SID NUMBER,
SCORE FLOAT not null
)
create table COURSES
(
CID NUMBER not null,
CNAME VARCHAR2(100) not null,
TID NUMBER,
CREDITS NUMBER not null
)
create table STUDENTS
(
SID NUMBER not null,
SNAME VARCHAR2(50) not null,
SEX CHAR(1),
BIRTHDATE DATE,
EMAIL VARCHAR2(50)
)
例1:获取student表全部数据
with s as
(select * from students)
select * from s;
例2:获取小于平均成绩的学生学号和成绩
with c as
(select avg(score) as value from courseresults)
select sid,score from courseresults,c where score>c.value;
例3:获取课程平均成绩大于85分的男生的学号
with
s1 as
(select sid from courseresults group by sid having avg(score)>85),
s2 as
(select sid from students where sex='m')
select * from s1 intersect select * from s2;
结论:使用with as语句的确可以使复杂的SQL语句具有更清晰的结构。
0
0
0
====me test
插入时:
insert into gjtable
with
s1 as
(select sid from courseresults group by sid having avg(score)>85),
s2 as
(select sid from students where sex='m')
select * from s1 intersect select * from s2;
分享到:
相关推荐
### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...
总而言之,Oracle9i Application Server (9iAS) with Oracle E-Business Suite Release 11i的故障排查文档是针对使用这些产品的用户的重要参考资料。它提供了解决安装和运行过程中可能遇到问题的详细指导,帮助用户...
Oracle 中分组后拼接分组字符串 本文主要介绍了在 Oracle 中如何对分组后的数据进行拼接操作,生成分组字符串。下面将对这个问题进行详细的分析和解释。 首先,我们需要创建一个测试表,并插入一些测试数据。这个...
标题指出的是在Red Hat Enterprise Linux Advanced Server (RHEL AS) 5 或 CentOS 5 上安装Oracle Database 10g Release 2 (10.2.0.1),并且使用vmware 6.x作为虚拟化平台。 #### 描述解析 该描述强调了作者通过...
根据提供的文件信息,我们可以归纳出以下相关知识点: ### 一、AS/400系统简介...综上所述,这部分内容主要涉及了AS/400和Oracle 10g环境下数据库备份与恢复的基本操作,对于维护数据库的安全性和可靠性具有重要意义。
标题与描述均指向了一个主题——Oracle高级SQL培训与讲解,特别是关于WITH子句的深入探讨。这份文档由李康康撰写,旨在教授读者如何高效地使用WITH子句,以及理解其提升查询性能的机制。 ### Oracle高级SQL中的WITH...
### Oracle高级SQL培训与讲解——WITH子句详解 #### 学习目标 - 掌握WITH子句的基本用法及特点。 - 了解WITH子句如何优化查询性能。 - 孶明WITH子句的常见应用场景。 #### WITH子句概述 在Oracle数据库中,WITH...
### Oracle 实现数据同步 #### 一、概述 在企业级应用中,为了实现数据的一致性和冗余性,往往需要在多个服务器之间同步数据。Oracle 提供了多种方式进行数据同步,其中一种常用的方法是利用 **dblink** 结合 **...
批量修改Oracle序列值的需求可能出现在数据迁移、恢复或测试环境中,确保序列与实际数据匹配。这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解...
With the Partitioning, OLAP, Data Mining and Real Application Testing options ``` #### 六、总结 通过以上步骤,我们已经成功在CentOS 5.4环境下安装并配置了Oracle客户端,可以实现对远程数据库的访问。这...
- 选择相应的安装类型,如“Server with Management Tools”或“Custom”。 - 指定数据库类型,如通用服务器、分区数据库等。 - 配置全局数据库名、系统标识符(SID)和监听器端口。 - 分配数据库文件存储位置,...
start with rnNext is null connect by rnNext = prior rnFirst group by No; ``` 最终的结果如下: | NO | VALUE | NAME | | --- | --- | --- | | 1 | a;b;c;d | 测试 1; 测试 2; 测试 3; 测试 4 | | 2 | e | ...
Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...
Add Oracle.ManagedDataAccess.dll as a reference to the project. Replace the contents of Program.cs with the following C# code. Notice that the namespace of ODP.NET, Managed Driver (Oracle....
START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; ``` 插入数据时,使用`sequence_name.NEXTVAL`获取序列的下一个值。 2. **单引号的处理**: MySQL允许字符串使用双引号,而Oracle则要求使用单引号。在处理字符...
3. **创建视图**:`CREATE OR REPLACE VIEW`用于创建或替换视图,如`CREATE OR REPLACE VIEW ROYAL_MDVIEW AS SELECT ...`。 4. **删除视图**:使用`DROP VIEW`来删除已存在的视图,如`DROP VIEW ROYAL_MDVIEW`。 ...