1、 交叉联接
交叉连接即笛卡儿乘积,是指两个关系中所有记录的任意组合。一般情况下,交叉查询是没有实际意义的。
SQL> select * from emp e cross join dept d;
备注:可以添加where子句筛选出有意义的数据。建议不使用。
2、 自连接查询
如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询。同一张表在FROM字句中多次出现,为了区别该表的每一次出现,需要为表定义一个别名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。
例如:要求检索出员工编号为7369的上司的详细信息,查询语句为
SQL> select e1.* from emp e inner join emp e1 on e.mgr=e1.empno where e.empno=7369;
注意:对于连接查询中使用到的 inner outer是可以省略的。但为规范最好不要省略。
提高部分:
SQL> select * from emp e inner join dept d on e.deptno(+)=d.deptno;的理解?
l 使用外连接可以查询不满足连接条件的数据。
l 外连接的符号是 (+)。
l 在NATURAL JOIN 子句创建等值连接时,可以使用 USING 子句指定等值连接中需要用到的列。
l 使用 USING 可以在有多个列满足条件时进行选择。
l 不要给选中的列中加上表名前缀或别名。
l NATURAL JOIN 和 USING 子句经常同时使用。
//理解
SQL> select * from emp e join dept d using(deptno);
3、 集合操作
集合操作符有union、intersect、minus
5.1、union运算符可以将多个查询结果集相加,形成一个结果集,要是用union操作,源表列必须一致,并且必须从每个表中读取相同个数的列。语法格式如下:
Select columns from table union select column from table union …
5.2、intersect与union指令相似,intersect也是对两个sql语句产生的结果做处理的。不同的是,union像or运算,而intersect像and运算,使用intersect求两个查询结果的交集,语法如下:
Select columns from table intersect select column from table union …
5.3、minus集合运算符是非常重要的,该运算符可以找到给定的两个集合之间的差异意味着找到一个数值集合,其中的元素仅存在于前一个集合,而不存在于另一个集合中,格式如下:
Select columns from table Minus select column from table union …
所需要的结果在前一个select中,不在后一个select中
4、 子查询
子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。
使用子查询注意事项:
子查询可以嵌套多层
子查询需要圆括号()括起来
子查询语法:
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
l 子查询 (内查询) 在主查询之前一次执行完成。
l 子查询的结果被主查询使用 (外查询)。
举例:查询员工的工资大于JONES的员工信息
分析过程如下:
首先:查询JONES的员工工资是多少 :结果2975
SQL> select sal from emp where ename='JONES';
实际上我们要查询的是:薪资大于2975的员工的信息写法如下:
SQL> select * from emp where sal>2975;
//综合以上写出子查询的结果如下:
SQL> select * from emp where sal>(select sal from emp where ename='JONES');
注意:
l 子查询要包含在括号内。
l 将子查询放在比较条件的右侧。
根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,
注意:
l 单行操作符对应单行子查询,多行操作符对应多行子查询。
单行操作符
>、>=、 <、 <= 、<>、=
举例:
//查询编号7876相同职位的员工信息 并且薪资大于编号为7521的薪资的员工信息
SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);
//子查询含有组函数
SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
//子查询含有having子句 查询部门的最小工资大于20号部门最小工资的部门号及最小工资数
SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
备注:子查询可以返回空行 没要查询到结果是可以的。
多行子查询
l 返回多行。
l 使用多行比较操作符。
操作符如下图:
操作符
|
描述
|
In
|
等于列表中的任何一个
|
Any
|
子查询返回的任意一个值比较 相同还有some
|
All
|
和子查询返回的所有值比较
|
Exists
|
|
//查询薪水小于工作岗位CLERK的任何一个薪资的员工信息 并且不包含工作岗位为CLERK的员工信息
SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';
//all与所有值比较 >all 代表的是大于查询结果的最大值
SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';
//查询岗位与部门编号为10相同的员工信息 不包含自己。
SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;
SQL> select * from emp where exists(select * from dept);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
分享到:
相关推荐
oracle笔记高级子查询,oracle中的高级子查询有点难度,不太好理解,有具体的案例代码!
李兴华Oracle全部笔记是一份详细记录了Oracle相关知识的学习资料,涵盖了从基础概念到高级特性的全面讲解。这些笔记可能是李兴华在深入研究Oracle后的心得体会,对于想要学习或提升Oracle技能的人来说是一份宝贵的...
oracle笔记子查询,有子查询相关的知识点笔记和具体的案例代码!
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
这个是我学习网上的视频做的oracle笔记,对于oracle一窍不通的菜鸟可能有用吧,大家有需要可以看看
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
标题“2011Oracle笔记(李兴华视屏教程笔记)”揭示了文档的用途,它是作为2011年李兴华Oracle教学视频课程的学习笔记。这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的...
Oracle是世界上最广泛使用的商业关系型数据库管理系统之一,...通过达内的Oracle笔记和PPT课件,学员可以系统地学习Oracle数据库的各个方面,从基础知识到高级应用,为成为专业的数据库管理员或开发人员奠定坚实基础。
- ORACLE第六天.txt可能涵盖更高级的SQL查询技巧,如子查询、连接查询、集合操作等。 - ORACLE第九天.txt可能讨论到数据库安全性,如用户权限、角色、表权限的管理。 - 其他天数的笔记可能包括存储过程、触发器、...
这篇史上最全的Oracle笔记将为你提供全面的学习指导。 一、数据库基础 数据库(DataBase)是存储数据的系统,Oracle数据库允许用户以表格的形式组织和管理数据。在Oracle中,数据主要以表的形式存在,表是数据库中...
SQL包括数据查询、数据更新、数据插入和数据删除等操作,以及更高级的子查询、连接操作和集合操作。理解SQL的执行计划和索引优化对于提升数据库性能至关重要。 Oracle的存储结构也是学习的重点,比如表空间、段、区...
Oracle学习笔记是李兴华老师编写的Oracle从入门到精通的学习笔记,涵盖了 Oracle 的多表查询、连接、组函数和分组统计等知识点。在本篇笔记中,李兴华老师详细介绍了多表查询的基本语法、左右连接、交叉连接、自然...
oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记...
韩顺平Oracle数据库教程笔记涵盖了Oracle数据库的基础知识和高级技术,涵盖了数据类型、查询语句、条件语句、排序语句、分组语句、联结语句、子查询、数据操作、视图、索引、存储过程、触发器、数据库设计、数据库...
Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
通过《韩顺平Oracle课堂笔记》,学习者可以系统地学习Oracle数据库,从基础到高级,从理论到实践,逐步提升自己的数据库管理能力。无论是初学者还是经验丰富的开发者,这份笔记都将提供宝贵的参考和指导。
### 韩顺平Oracle笔记知识点详解 #### 一、Oracle认证及与其他数据库的比较 - **Oracle认证**:Oracle提供了多种级别的认证体系,包括OCA(Oracle Certified Associate)、OCP(Oracle Certified Professional)、...
其中,“i”在Oracle8i中表示增加了对Internet的支持,Oracle9i则是Oracle8i的稳定版本,而Oracle10g是基于网格计算技术的版本,Oracle11g是10g的稳定版本,Oracle12C则是支持云计算概念的最新版本。在初学者阶段,...
这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看《Oracle PL-SQL入门教程(经典).doc》。这份文档详细介绍了PL/SQL,Oracle...