Oracle中连接查询怎么运用??「终于解决」

Oracle中连接查询怎么运用??「终于解决」welcome to 煌sir详解Oracle 篇章,让我们继续一起学习吧~~ 查询–连接查询 一. 基础语法 笛卡尔积:两个表乘积,所有的数据最大集(开发无用) select * from A …

Oracle中连接查询怎么运用??

welcome to 煌sir详解Oracle 篇章,让我们继续一起学习吧~~ 

查询–连接查询

一. 基础语法

笛卡尔积:两个表乘积,所有的数据最大集(开发无用)

select * from A , B;

 

内连接

  • 隐式内连接

select * from A , B where a.id = b.aid;

 

  • 显示内连接

select * from A
inner join B on a.id = b.aid;

 

  • 外链接
  • 左外连接:查询左表(A)所有数据,如果条件成立显示右边(B)的数据,否则显示null

select * from A
left outer join B on a.id = b.aid

 

  • 右外连接:查询右表(B)所有数据,如果条件成立显示左边(A)的数据,否则显示null

select * from A
right outer join B on a.id = b.aid

 

三:内连接查询实用:

--1查询显示业主编号,业主名称,业主类型名称
--隐式内连接
select ow.id 业主编号,ow.name 业主名称,ot.name 业主类型名称 from t_owners ow,t_ownertype ot 
where ow.ownertypeid=ot.id ;

--显示内连接
select ow.id 业主编号,ow.name 业主名称,ot.name 业主类型名称 from t_owners ow
inner join t_ownertype ot on ow.ownertypeid = ot.id ;




--2查询显示业主编号,业主名称、地址和业主类型


--隐式内连接
select ow.id as 编号,ow.name as 业主名称,a.name as 地址名称,ot.name as 业主类型名称
 from t_owners ow,t_ownertype ot ,t_address a
where ow.ownertypeid=ot.id and ow.addressid=a.id;


--显示内连接
select ow.id as 编号,ow.name as 业主名称,a.name as 地址名称,ot.name as 业主类型名称
 from t_owners ow inner join t_address a on ow.addressid=a.id 
inner join t_ownertype ot on ow.ownertypeid=ot.id;




--3查询显示业主编号、业主名称、地址、所属区域、业主分类
--隐式内连接
select ow.id 业主编号,ow.name 业主名称,a.name 地址,ar.name 所属区域,ot.name 业主分类 
from t_owners ow,t_ownertype ot, t_address a, t_area ar 
where ow.ownertypeid=ot.id and ow.addressid=a.id and a.areaid=ar.id ;


--显示内连接
select ow.id 业主编号,ow.name 业主名称,a.name 地址,ar.name 所属区域,ot.name 业主分类 
from t_owners ow inner join t_ownertype ot on ow.ownertypeid=ot.id
inner join t_address a on ow.addressid=a.id
inner join t_area ar on a.areaid=ar.id;





--4查询显示业主编号、业主名称、地址、所属区域、收费员、业主分类
--隐式内连接
select ow.id 业主编号,ow.name 业主名称,ad.name 地址,ar.name 所属区域, op.name 收费员,ot.name 业主分类
 from t_owners ow ,t_address ad,t_area ar ,t_operator op ,t_ownertype ot
where ow.addressid=ad.id and ad.areaid=ar.id and ad.operatorid=op.id   and ow.ownertypeid=ot.id ;


--显示内连接
select ow.id 业主编号,ow.name 业主名称,ad.name 地址,ar.name 所属区域, op.name 收费员,ot.name 业主分类
from t_owners ow inner join t_address ad on ow.addressid=ad.id
inner join t_area ar on ad.areaid=ar.id 
inner join t_operator op on ad.operatorid=op.id  
inner join t_ownertype ot on ow.ownertypeid=ot.id order by ow.id asc;

代码100分

 

 

四. 左外连接

代码100分--需求:查询业主的账务记录,显示业主编号、名称、年、月、金额。如果此业主没有账务记录也要列出姓名。
select ow.id 业主编号,ow.name 名称,ac.year 年,ac.month 月,ac.money 金额 
from t_owners ow left outer join t_account ac 
on ow.id=ac.ownerid;


select ow.id 业主编号,ow.name 名称,ac.year 年,ac.month 月,ac.money 金额 
from t_owners ow left join t_account ac on ow.id=ac.ownerid;

 

Oracle 左外连接特殊用法(右边用+)

在内连接基础上,使用(+) 转换 左外连接

--oracle 左外连接 特殊用法:
select ow.id 业主编号,ow.name 名称,ac.year 年,ac.month 月,ac.money 金额 from t_owners ow, t_account ac where ow.id=ac.ownerid(+);
 

 

 

五.右外连接查询

代码100分--需求:查询业主的账务记录,显示业主编号、名称、年、月、金额。如果账务记录没有对应的业主信息,也要列出记录


select ow.id 业主编号,ow.name 名称,ac.year 年,ac.month 月,ac.money 金额 from t_owners ow right join  t_account ac  on ow.id=ac.ownerid;

 

 

Oracle 右外连接特殊用法(左边用+)

--oracle特殊语法
select ow.id 业主编号,ow.name 名称,ac.year 年,ac.month 月,ac.money 金额   from t_owners ow ,t_account ac where ow.id(+) =ac.ownerid;

 

 

小结:

内连接:

  • 隐式内连接

  • select * from 表1, 表2, …. where 表1.字段 = 表2.字段 and 连接条件

 

  • 显示内连接

select * from 表1
inner join 表2 on 表1.字段 = 表2.字段
inner join 表3 on 连接条件
…..

 

  • 外链接
  • 左外连接:查询左表(表1)的所有数据,条件成立显示右表(表2)数据,条件不成立显示null

select * from 表1
left outer join 表2 on 表1.字段 = 表2.字段
….

 

  • 右外连接:查询右表(表2)的所有数据,条件成立显示左表(表1)数据,条件不成立显示null

select * from 表1
right outer join 表2 on 表1.字段 = 表2.字段
….

 

 

  • Oracle 外链接,将隐式内连接转换成对应外链接 (了解)

左外连接:

select * from 表1, 表2 
where 表1.字段 = 表2.字段(+)

 

右外连接:

select * from 表1, 表2 
where 表1.字段(+) = 表2.字段

 

 

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8210.html

(0)
上一篇 2023-03-05
下一篇 2023-03-05

相关推荐

  • portable kettle_kettle连接oracle数据库报错

    portable kettle_kettle连接oracle数据库报错报错误The tablename is not defined (empty) 去掉表输出中的“表分区数据”

    2022-12-30
    162
  • SQL Server 数据库部分常用语句小结(四)

    SQL Server 数据库部分常用语句小结(四)42.统计APP应用的DB连接及IP情况 select b.hostname ,a.client_net_address, b.program_name ,count(1) as Qtyfrom sy

    2023-03-11
    150
  • Python os模块:获取当前工作目录(Current Directory)

    Python os模块:获取当前工作目录(Current Directory)Python是一种高级编程语言,它具有优雅、简单、易读的特点,被广泛应用于各种领域。Python的标准库是它最骄傲的部分之一,其中os模块是与操作系统交互的主要模块之一。在本文中,我们将深入研究os模块中的一个函数:获取当前工作目录(Current Directory)。

    2024-01-08
    124
  • 将Python的datetime.timedelta()转换为数字

    将Python的datetime.timedelta()转换为数字在Python中,datetime模块中的timedelta类可以表示两个时间之间的差距。有时我们需要将这个时间差表示为一个数字。本文将对如何将timedelta转换为数字进行详细介绍。

    2024-05-04
    71
  • MySQL优化之慢查询日志「终于解决」

    MySQL优化之慢查询日志「终于解决」慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能。 慢查询日志选项默认是关闭的,

    2023-02-12
    166
  • 深度剖析Python中的get方法

    深度剖析Python中的get方法Python是一门高级编程语言,它提供了丰富的工具和库,使得开发人员能够快速开发出高效的应用程序。其中一个非常有用的工具就是get方法。在Python中,get方法是字典(dictionary)类中的常用方法之一,可以用于获取字典中指定元素的值。get方法的作用非常广泛,本文将从多个方面阐述get方法的使用,更好地帮助读者了解和掌握这个强大而有用的方法。

    2024-03-18
    77
  • 在Python中执行py文件

    在Python中执行py文件Python是一种广泛使用的高级编程语言,被认为是易于学习、易于阅读、易于维护和易于编写的语言。Python代码通常用.py文件扩展名保存。在Python中执行.py文件是很常见的操作。在本文中,我们将展示如何在Python中执行.py文件,无论是在命令行中,还是在Python IDE或编辑器中。

    2024-04-23
    71
  • MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解—讲解二[通俗易懂]

    MySQL数据库表的模糊/多行/分组/排序/分页查询以及字mysql数据类型的讲解—讲解二[通俗易懂]前言:今天给大家讲的是:MySQL数据库表的模糊/多行/分组/排序/分页查询以及mysql数据类型的讲解,当然如果你对数据库的基础操作–对库的创建/对表的增删改查有兴趣,可以去看看我的这篇文章–…

    2023-02-09
    144

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注