`
dingjun123
  • 浏览: 4399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle高级sql续1

阅读更多
被选择的列数和列的数据类型必须是与所有用在查询中的SELECT语句一致。列的名字不必相同。
联合运算在所有被选择的列上进行。
在做重复检查的时候不忽略空(NULL)值。
IN运算有比UNION运算高的优先级。
在默认情况下,输出以SELECT子句的第一列的升序排序。

全联合(UNION ALL)运算
用全联合运算从多个查询中返回所有行。
原则

    和联合不同,重复的行不被过滤,并且默认情况下输出不排序。
不能使用DISTINCT关键字。
使用:
Select statement union | union all Select statement;

1.2.intersect交集操作
相交运算
用相交运算返回多个查询中所有的公共行。 无重复行。
原则

在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。
相交的表的倒序排序不改变结果。
相交不忽略空值。
使用:
Select statement intersect all Select statement;

1.3. minus差集操作
相减运算
用相减运算返回由第一个查询返回的行,那些行不出现在第二个查询中 (第一个SELECT语句减第二个SELECT语句)。
原则

在查询中被SELECT语句选择的列数和数据类型必须与在查询中所使用的所有的SELTCT语句中的一样,但列的名字不必一样。
对于MINUS运算,在WHERE子句中所有的列都必须在SELECT子句中。


集合运算的原则
在两个SELECT列表中的表达式必须在数目上和数据类型上相匹配
可以用圆括号改变执行的顺序
ORDER BY子句:–只能出现在语句的最后–从第一个SELECT语句接收列名、别名,或者位置记号

注:除了UNION ALL,重复行自动被清除
在结果中的列名是第一个查询中出现的列名
除了UNION ALL,默认情况下按升序顺序输出
2.exists和not exists的使用
2.1. exists的使用
    Exists用于只能用于子查询,可以替代in,若匹配到结果,则退出内部查询,并将条件标志为true,传回全部结果资料,in不管匹配到匹配不到都全部匹配完毕,使用exists可以将子查询结果定为常量,不影响查询效果,而且效率高。如查询所有销售部门员工的姓名,对比如下:
IN is often better if the results of the subquery are very small
When you write a query using the IN clause, you're telling the rule-based optimizer that you want the inner query to drive the outer query.
When you write EXISTS in a where clause, you're telling the optimizer that you want the outer query to be run first, using each value to fetch a value from the inner query.
In many cases, EXISTS is better because it requires you to specify a join condition, which can invoke an INDEX scan. However, IN is often better if the results of the subquery are very small. You usually want to run the query that returns the smaller set of results first.


In和exists对比:
若子查询结果集比较小,优先使用in,若外层查询比子查询小,优先使用exists。因为若用in,则oracle会优先查询子查询,然后匹配外层查询,若使用exists,则oracle会优先查询外层表,然后再与内层表匹配。最优化匹配原则,拿最小记录匹配大记录。
使用in
select last_name, title
	from s_emp
	where dept_id in 
		(select id
		from s_dept
		where name='Sales');


使用exists
select last_name,title
       from s_emp e
       where  exists
       (select 'x' --把查询结果定为constant,提高效率
        from s_dept s where s.id=e.dept_id and s.name='Sales');

2.2 not exists的使用
    与exists 含义相反,也在子查询中使用,取出不满足条件的,与not in的含义不怎么一样,其他一样。如查询不在销售部的员工姓名
 select last_name,title
       from s_emp e
       where  not exists
       (select 'x' --把查询结果定为constant,提高效率
        from s_dept s where s.id=e.dept_id and s.name='Sales');
分享到:
评论

相关推荐

    oracle百度云盘下载

    Oracle 11g Release 1 (11.1) 是Oracle公司推出的一款关系型数据库管理系统(RDBMS),它是Oracle 10g的后续版本,在多个方面进行了改进和增强,以提高数据安全性、可靠性和性能。Oracle 11g R1主要面向企业级应用,...

    Oracle开发必备手册

    Oracle开发必备手册是一本针对程序员和数据开发人员的重要参考资料,主要涵盖了Oracle数据库系统中的SQL和PL/SQL语言的学习。本书作者以实例为主,通过实践来深入理解每个知识点,旨在为初学者提供一条更加直观和...

    toad for oracle 11.6 64bit 注册码 for oracle license key

    4. **高级调试功能**:支持PL/SQL代码的调试,包括断点设置、单步执行等功能。 5. **图形化用户界面**:直观易用的界面设计,使非技术背景的用户也能轻松上手。 6. **兼容性**:与最新的Oracle数据库版本兼容,同时...

    oracle 价值1.6w视频教程迅雷链接

    - **进阶篇**:涵盖高级SQL查询技巧、PL/SQL编程基础、触发器与存储过程编写等。 - **高级篇**:深入讲解Oracle性能调优方法、备份恢复策略、高可用性解决方案等。 - **实战案例**:通过实际案例演示如何解决常见...

    Embedded SQL.pdf

    嵌入式SQL(Embedded SQL)是一种将SQL语句与高级编程语言结合的技术,使得程序员可以在他们的应用程序中直接执行数据库操作。这种技术极大地扩展了高级语言的功能,特别是在处理数据存储和检索时。嵌入式SQL使得...

    数据库原理及应用:第三章 关系数据库标准语言SQL(续3).ppt

    SQL,全称Structured Query Language,是关系数据库的标准语言,用于管理关系数据库系统,如MySQL、Oracle和SQL Server等。SQL不仅用于数据查询,还涵盖数据定义、数据操纵、数据控制等多个方面。 【数据定义】 在...

    Oracle Golden Gate图文并茂快速掌握

    总而言之,Oracle Golden Gate是一个强大的异构平台间高级复制技术工具,它支持实时数据复制、异构平台数据同步、断点续传、高性能、事务一致性等核心特性,适用于多种业务场景,包括数据库升级、负载均衡、容灾、...

    Oracle-10g与11g的区别.docx

    Oracle 10g 的流(Streams)复制功能可以实现低系统消耗、双向(double-direction)、断点续传(resume from break point)、跨平台(cross platform)、跨数据源的复杂复制。 容灾数据卫士 Oracle 10g 的容灾...

    oracle课件

    - 文件"4 Oracle体系结构1 new.ppt"和"9 oracle体系结构(续)new.ppt"介绍了Oracle数据库的基本架构,包括内存结构(如System Global Area,SGA)、后台进程(如DBWR, LGWR等)、数据文件、控制文件、重做日志文件...

    Oracle系统调优详解.docx

    高级参数(续): * large_pool_size:指定大型池的分配堆得大型,它可被共享服务器用作会话内存,用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复的磁盘 I/O 缓冲区。 * log_buffer:以字节为单位,指定在 LGWR...

    PLSQL7的key

    开发的集成开发环境(IDE),专门用于Oracle数据库的PL/SQL语言编程。这款工具因其强大的功能、易于使用的界面以及对PL/SQL的强大支持而受到广泛欢迎。随着版本的迭代,PL/SQL Developer不断升级,提供了更多的功能...

    《MySql高级数据分析》期末测试.doc

    MySQL是一种广泛使用的开源关系型数据库管理系统,由MySQL AB公司创建,现属于Oracle公司。它在Web应用领域尤其受欢迎,作为RDBMS系统的一员,MySQL提供高效的数据存储和管理能力。 在高级数据分析中,掌握SQL语言...

    C#基类库(苏飞版)

    1.数据访问基础类(基于Oracle),主要是用来访问Oracle数据库的。 2.得到最大值;是否存在;是否存在(基于OracleParameter ); 3.执行SQL语句,返回影响的记录数; 4.执行多条SQL语句,实现数据库事务; 5.执行带一个...

    C语言PPT课件.pptx

    数据库语言有FoxPro、SQL、Oracle等。 111.1 C语言出现的历史背景(续) C语言的历史:ALGOL60(1960,面向问题的高级语言,不宜用来编写系统程序),CPL(1963,英国剑桥大学,规模较大),BCPL(1967,剑桥大学...

    一款强大的异构数据库导入导出工具

    例如,我们可能需要在MySQL和Oracle之间进行数据迁移,或者处理关系型数据库(如SQL Server)和非关系型数据库(如MongoDB)之间的数据交互。这样的工具通常需要支持多种数据库协议和接口,以便与各种类型的数据库...

    java知识全集

    **2.1 Oracle辅导(1--1)** - **SQL基础**: 包括SELECT、INSERT、UPDATE、DELETE等基本操作。 - **表结构设计**: 如何合理设计表结构,包括主键、外键、索引等。 - **数据类型**: Oracle支持的数据类型,如NUMBER、...

    某某大厂程序员面试简历模板

    * 责任描述:文档管理模块,主要包括上传、续传、下载、在线浏览、使用索引进行高级搜索、新建文件夹等功能。 五、求职意向 * 到岗时间:一周以内 * 工作性质:全职 * 希望行业:IT 服务(系统/数据/维护) * ...

    SSM+bootstrap+手機考試系統

    MyBatis则是一个持久层框架,它简化了SQL操作,将SQL与Java代码分离。 【Oracle数据库】 Oracle数据库是全球领先的商业数据库管理系统,广泛应用于大型企业级应用。它支持复杂的数据类型、高级安全性、高可用性和...

    IBM TSM招标参数.docx

    IBM TSM(Tivoli Storage Manager)是一款由IBM公司提供的高级数据保护软件,它在IT领域主要用于企业级的数据备份和恢复。此文档是关于IBM TSM的招标参数,旨在确保所选用的备份解决方案能满足特定的技术需求。 ...

Global site tag (gtag.js) - Google Analytics