Oracle复杂查询(三)

简介: 在from中使用子查询:如上例Oracle复杂查询(二)最后一行,在from语句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,而且必须要给子查询制定别名!!【注意:在给列取别名时可以加as,而给表...

在from中使用子查询:

如上例Oracle复杂查询(二)最后一行,在from语句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,而且必须要给子查询制定别名!!

【注意:在给列取别名时可以加as,而给表加别名不可加as】

分页子查询:Oracle一共有三种  1、rownum   2、分析函数    3、rowid效率最高

一、rownum分页

第一步:先做子查询:select * from  emp;

第二步:显示rownum【oracle分配的】

select  a1.*,rownum  rn   from   (select * from emp)  a1;

第三步:显示6到10 号的数据

  select  a1.*,rownum  rn   from   (select * from emp)  a1   where  rownum<=10; 【此处rownum不可用别名】

select * from ( select  a1.*,rownum  rn   from   (select * from emp)  a1   where  rownum<=10)  where  rn >=6;

【注意:不能直接写成select  a1.*,rownum  rn   from   (select * from emp)  a1   where  rownum<=10 and  rownum>=6或者是用between  and,都不可以,oracle 的分页一次只能使用一次,类似于二分法】



查询的变化

a、指定查询咧,只需要修改最里层的子查询

b、如何排序,只需要修改最里层的子查询


用查询结果创建新表;

create table  mytable (id,name,sal,job,deptno)  as  select  empno,ename,sal,job,deptno,from emp;


合并查询:【速度远远高于and,or等等】

有时候在实际应用中,为例合并多个select语句的结果,可以使用集合操作符union,union all ,intersect,minus;

(1)union  

该操作用于取得两个结果集的并集,会自动去除结果集中的重复行,

select  ename  ,sal ,job  from  emp  where  sal >2500 union select  ename  ,sal ,job  from  emp  where  job ='manager'

(2)union all   与union相似,但不会取消重复行,而且不会排序。

select  ename  ,sal ,job  from  emp  where  sal >2500 union all   select  ename  ,sal ,job  from  emp  where  job ='manager'

(3)intersect

使用该操作符用于取得两个结果集的交集

select  ename  ,sal ,job  from  emp  where  sal >2500  intersect select  ename  ,sal ,job  from  emp  where  job ='manager'

(4)minus

两个结果集的差集,会显示存在第一个集合中,而不存在第二个集合中的数据


相关文章
|
10月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
9月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的闪回版本查询
本文介绍了Oracle数据库的闪回版本查询(Flashback Version Query)功能,通过示例详细讲解了其使用方法。闪回版本查询可获取指定时间区间内行的不同版本,利用`versions between`子句实现。文中包含视频讲解,并通过创建测试表、插入数据及执行查询等步骤,演示如何获取历史版本信息和伪列详情,帮助用户深入了解该功能的实际应用。
193 13
|
8月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)是闪回版本查询的扩充,可用于审计或撤销已提交的事务。通过`flashback_transaction_query`视图,可生成还原特定事务的SQL语句。本文介绍了其基本概念,并通过实战演示如何使用该功能:从授权、开启UNDO数据增强,到创建测试表和事务,最后利用闪回查询撤销已提交的事务,验证数据恢复效果。附带视频讲解,帮助深入理解。
212 3
|
9月前
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
|
9月前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】oracle dblink varchar类型查询报错记录
这篇文章主要介绍了 Oracle DBLINK 查询崖山 DB 报错的相关内容,包括 ODBC 安装配置、数据源配置、dblink 环境配置、问题原因分析及规避方法。问题原因是 dblink 连接其他数据库时 varchar 类型转换导致的,还介绍了 long 类型限制、char 等类型区别,规避方法是修改参数 MAX_STRING_SIZE 支持 32K。
|
10月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。
|
11月前
|
Oracle 关系型数据库 数据库
【YashanDB知识库】oracle dblink varchar类型查询报错记录
在使用Oracle DBLink查询VARCHAR类型数据时,可能会遇到多种报错。通过了解常见错误原因,采取合适的解决方法,可以有效避免和处理这些错误。希望本文提供的分析和示例能帮助你在实际工作中更好地处理DBLink查询问题。
328 10
|
11月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
Oracle 关系型数据库 数据处理
|
SQL 监控 Oracle