【学亮开讲】Oracle内外连接查询20181119

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

--外连接查询
--需求:查询业主的账务记录,显示业主编号、名称、年、月、金额。如果此业主没有账务记录也要列出姓名
--sql1999写法
select ow.id 业主编号,ow.name 业主名称,ac.year 年,ac.month 月,ac.money 金额
from t_owners ow left join t_account ac
on ac.owneruuid = ow.id
--Oracle写法
select ow.id 业主编号,ow.name 业主名称,ac.year 年,ac.month 月,ac.money 金额
from t_owners ow,t_account ac
where ow.id=ac.owneruuid(+)
--右外连接查询
--需求:查询业主的账务记录,显示业主编号、名称、年、月、金额。如果账务记录没有对应的业主信息,也要列出记录。
--sql1999写法
select ow.id 业主编号,ow.name 业主名称,ac.year 年,ac.month 月,ac.money 金额
from t_owners ow right join t_account ac
on ac.owneruuid = ow.id
--Oracle写法
select ow.id 业主编号,ow.name 业主名称,ac.year 年,ac.month 月,ac.money 金额
from t_owners ow,t_account ac
where ow.id(+)=ac.owneruuid

原文地址:https://www.cnblogs.com/niwotaxuexiba/p/9986286.html

时间: 2024-11-02 22:28:21

【学亮开讲】Oracle内外连接查询20181119的相关文章

分组查询与内外连接查询

一. 分组查询 1.语法 SELECT ... FROM ... GROUP BY ... --分组查询Group by    select COUNT(*) as 学生人数,GradeId as 年级编号 from Student group by GradeId 2.进行多表之间的分组查询 --查询每门课程的平均分    --where 和 group by 和 order by 的顺序    select AVG(StudentResult) as 平均分,SubjectName as 课

[数据库] Oracle单表查询总数及百分比和数据横向纵向连接

这是最近项目关于SQL语句的,本文简单记录并总结以下几个知识点: 1.如何统计一张表中某个字段的总数,如不同"专业"的学生数及所占百分比: 2.如何联系另一张表进行查询某个字段的总数及百分比: 3.简单介绍decode防止分母为0和trunc保留小数位数等函数: 4.通常复杂的SQL语句会涉及到查询结果横向连接和纵向连接,这里进行介绍. 最近买了本<Oracle查询优化改写技巧与案例·有教无类 落落>,推荐大家也阅读下.后面我也会补充一些相关数据的知识,希望对大家有所帮助吧

【Oracle】Oracle的内外连接

1,Oracle中的内外连接 1,内连接 内连接就是符合条件的数据被选中,不符合条件的数据被过滤掉. 1,1,1 等值连接 先看看需要使用的“s_emp”表结构: 1 table name:s_emp 2 Name Description 3 ------------------ ------------- 4 ID 员工编号 5 LAST_NAME 名称 6 FIRST_NAME 姓氏 7 USERID 身份证号 8 START_DATE 开始时间 9 COMMENTS 评论内容 10 MAN

Oracle 连接查询&lt;一&gt;

在Oracle数据库中,连接查询分为交叉连接.内连接.外链接3种类型.其中,交叉连接结果是所有其他连接结果的超集,而外连接结果又是内连接结果的超集. 交叉连接 交叉连接又称为笛卡尔积连接,是两个或多个 表之间的无条件连接.一个表中所有记录分别与其他表中所有记录进行记录.如果进行连接的表分别有n1,n2,n3...条记录,那么交叉连接的结果集中将有n1 x n2 x n3 x...条记录.例如,emp表中有14条记录,dept表中有4条记录,那么两个交叉连接后有56条记录,语句为 SQL> SEL

Oracle(sql)文盲大扫除思维导图系列(三)——多表连接查询子查询

继续上图 一些demo --通过连接运算符可以实现多个表查询,连接是关系数据库模型的主要特点. --在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来. --一般来说,连接查询比嵌套查询的效率高一点.所以,在Transact-SQL中推荐使用这种方法. select * from emp; select * from dept; select * from salgrade; --先来看内连接,内连接是最典型和最常用的连接运算,内连接通常通过连接谓词或运算符(如joi

Oracle连接查询

一.内连接和外连接    内连接用于返回满足连接条件的记录:而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下: Oracle代码 select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column; inner join表示内连接.left join表示左外连接.right join表示右外连

Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group by deptno; --根据部门分组,并统计 Select deptno, count(*) form emp group by deptno; select deptno, avg(sal) from emp group by deptno; --每个部门的平均工资 HAVING子句 用于指定

oracle(sql)基础篇系列(二)&mdash;&mdash;多表连接查询、子查询、视图

    多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门名字 --(1)必须明确的指出重复字段属于哪个表 select ename,dname dept.deptno from emp,dept where emp.deptno = dept.deptno;   --(2)新语法:join...on(...=...) select ename,

oracle 多表连接查询

一.内连接(inner join (可简写为join)) 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值. 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复属性. (区别于自然连接) SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; SELECT DEPT.DNAME,EMP.ENAME FROM EMP,DEPT WHERE EMP.D