龙空技术网

Oracle数据库之高级查询三

出水菱角 155

前言:

当前看官们对“oracle自连接查询”大体比较珍视,朋友们都想要剖析一些“oracle自连接查询”的相关文章。那么小编同时在网上搜集了一些关于“oracle自连接查询””的相关知识,希望我们能喜欢,我们一起来学习一下吧!

本节讨论关联查询和子查询的内容,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

标签: #oracle自连接查询