Oracle 自连接 / 外连接 / 子查询

--连接查询的三种格式
select ename, deptno,dname from emp natural join dept;
select ename, deptno,dname from emp join dept using(deptno);
select emp.ename, emp.deptno,dept.dname from emp join dept on emp.deptno!=dept.deptno;

--自连接,将一张表当成两张表来看待
select e.ename,m.ename from emp e join emp m on e.mgr= m.empno

--外连接right outer join/Left outer join/full outer join
select ename,d.deptno,d.dname
from emp right outer join dept d on emp.deptno= d.deptno

--连接更多表
 select ename,dname,grade
 from emp join dept on emp.deptno=dept.deptno
          join salgrade on sal BETWEEN losal and hisal;

---------------------------------------------------------------------子查询
--单行子查询:子查询返回一行
select * from emp where sal>(select avg(sal)from emp);

--多行子查询:子查询返回多行 ANY(任意) ALL(所有) IN(在里面)
select * from emp where sal>all(select avg(sal)from emp group by deptno);

--[not] exists 判断是否行存在
select ename,mgr
from emp e where EXISTS(select 1 from emp where e.empno=mgr);

  

时间: 2024-08-02 10:22:02

Oracle 自连接 / 外连接 / 子查询的相关文章

MySQL数据库 多表查询 交叉连接 自然连接 内连接 自连接 外连接 子查询 多表查询练习 单表查询练习 𚳮

原文: http://blog.gqylpy.com/gqy/466 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

用实验方法加深理解Oracle的外连接(left/right/full)和内连接(inner)

总是对Oracle的左连接.右连接以及(+)对应的外连接类型糊涂,通过实验加深对连接类型语法的理解.外连接分为三种: 1. 左外连接,对应SQL关键字:LEFT (OUTER) JOIN 2. 右外连接,对应SQL关键字:RIGHT (OUTER) JOIN 3. 全外连接,对应SQL关键字:FULL (OUTER) JOIN 左右外连接都是以一张表为基表,在显示基表所有记录外,加上另外一张表中匹配的记录.如果基表的数据在另一张表中没有记录,那么相关联的结果集行中显示为空值. 精确点说,引用MO

Oracle学习(六):子查询

1.知识点:可以对照下面的录屏进行阅读 SQL> --子查询所要解决的问题:问题不能一步求解 SQL> --查询工资比SCOTT高的员工信息 SQL> --(1)使用普通方法 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SQL> --2. 查询比3000高的员工 SQL> select * 2 from emp 3 where sal>3000; SQL> --(2)

Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数

一.  数据库 手工---文件管理---数据库 DB:Database 数据库. DBMS:管理数据库的软件.(oracle) 主流关系数据库: 1.      Oracle 2.      DB2 3.      SQL Server 基本没人使 4.      MySQL  基本没人用,免费 Linux 开源,可以发现漏洞补上 Windows服务器会有补丁,数据易泄漏 eclipse 日食 数据表(Table): 表的行(Row):记录 表的列(Column):字段 二.  关系型数据库 一

分组函数 多表连接 子查询

count计数行数sum 求和 avg 求平均值 min最小值 max最大值例:elect avg(salary), avg(nvl(commission_pct, 0)) from employees; //求所有人的提成平均值 包括没有提成的 nvl:定义空值只有count(*) 会把空值统计进去 count 不会统计空值group by 根据--分组 空值不会被排除只允许出现分组的列和分组的函数例:select department_id, avg(salary) from employe

主外键 子查询

主键.外键和子查询 1 主键和外键的区别 1.1定义主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空 1.2作用 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 1.3个数: 主键--主键只能有一个 外键--一个表可以有多个外键 2 主键语句code int PRIMARY KEY IDENTITY(1,1), --PRIMARY KEY 标识主键--IDENTITY(1,1) 从一开始,每增加一行加一:插入数据不用

Oracle 左外连接的一些測试

为了更加深入左外连接,我们做一些測试,外连接的写法有几种形式,我们能够通过10053跟踪到终于SQL转换的形式. --初始化数据 create table A ( id number, age number ); create table b ( id number, age number ); insert into A values(1,10); insert into A values(2,20); insert into A values(3,30); insert into B val

Oracle 左外连接的一些测试

为了更加深入左外连接,我们做一些测试,外连接的写法有几种形式,我们可以通过10053跟踪到最终SQL转换的形式. --初始化数据 create table A ( id number, age number ); create table b ( id number, age number ); insert into A values(1,10); insert into A values(2,20); insert into A values(3,30); insert into B val

oracle数据库外连接

外连接作用:(左外连接和右外连接;注:没有全外连接) 希望把某些不成立的记录(40号部门),仍然包含在最后的结果中 左外连接:当where e.deptno=d.deptno不成立的时候,等号左边的表任然被包含在最后的结果中; 写法:where e.deptno=d.deptno(+) 右外连接:当where e.deptno=d.deptno不成立的时候,等号右边的表任然被包含在最后的结果中; 写法:where e.deptno(+)=d.deptno; 原文地址:https://www.cn