网站首页 > 数据库 / 正文
本节讨论关联查询和子查询的内容,Oracle子查询就是嵌套查询,select 查询的结果作为另外一个select、update或delete语句的条件,可以分为单行子查询和多行子查询。
Oracle子查询
select 列名 from 表名
where 表名.列名1 in (select 表名1.列名1
from 表名1
where 表名1.列名2 = 值1);
- 内层select的查询结果作为外层select的条件,返回一条或者多条查询结果
- 用in关键字表示外层条件值在in后的备选条件中
此外,ANY和ALL值和关系运算符接收子查询的多行结果
select t.列名 from 表名 t where t.列名1>any(值1,值2,值3......);
select t.列名 from 表名 t where t.列名2>all(值1,值2,值3......);
- ANY关键字:表示子查询结果当中的任意一个,即任意一个条件成立
- ALL关键字:表示子查询中的所有结果。本例中比all中的最大值还大
关联查询
Oracle连接查询,包含内关联和外关联。外关联包括:左外关联、右外关联和全外关联。
内连接
select * from 表名1 a, 表名2 b where a.列名 = b.列名;
- 连接条件中使用等于号(=)运算符比较被连接列的列值,查询结果中列出被连接的所有列
- 除等于运算符(=)以外,其它比较运算符可用于内连接
外连接
select * from 表名 a left join 表名1 b on a.列1 = b.列1;
- 左连接(left join)中左表记录不变,把右表与左表联结字段相等的记录挂在左表上,没挂上的部分为null
select * from 表名1 a right join 表名2 b on a.列1 = b.列1;
--右连接(利用(+)在左边)另外一种写法
select * from 表名1 a,表名2 b where a.列1(+)=b.列1;
- 右联接(right join)中右表记录不变,把左表联结字段相等的记录挂在右表上,没挂上的部分为null
- 右联结(+)的另一种写法
select * from 表名1 a full join 表名2 b on a.列1 = b.列1;
- 全连接(full join)中左右记录不变,左表无右表部分相关字段为null,右表无左表部分相关字段为null
Tags:oracle查询库
猜你喜欢
- 2024-11-26 Oracle数据库之高级查询一
- 2024-11-26 oracle查询用户的权限
- 2024-11-26 oracle数据库查询Sql语句是否使用索引及常见的索引失效的情况
- 2024-11-26 Oracle查询扩展
- 2024-11-26 连载四:Oracle升级文章大全(完结篇)
- 2024-11-26 Python 操作Oracle数据库常用的方法和工具
- 2024-11-26 分享两个Oracle的shell脚本---一键获得数据库实例状态、参数及包
- 2024-11-26 ORACLE 分页查询整理笔记
- 2024-11-26 详解Oracle 11g如何快速定位到lobsegment、lobindex对应的表
- 2024-11-26 日常运维笔记--给oracle用户授权,使之能查询系统视图