博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库-表连接
阅读量:2290 次
发布时间:2019-05-09

本文共 1869 字,大约阅读时间需要 6 分钟。

表连接

当获取的数据不是来源于同一张表,而是来源于多张表的时候就需要用到表连接。

一、92连接

1、笛卡尔积

在这里插入图片描述

两个集合A和B,A*B就是笛卡尔积

course表

在这里插入图片描述

teacher表

在这里插入图片描述

select * from course,teacher
运行结果
在这里插入图片描述

2、等值连接

等值连接,就是在笛卡尔积的基础上去条件相同的值

select * from course c,teacher t where c.tno = t.tno
运行结果
在这里插入图片描述

3、非等值连接

非等值连接:>、<、!=、<>、between and

-- 查询员工姓名,工资及等级select ename,sal,grade from salgrade s,emp e where e.sal between s.losal and s.hisal
运行结果
在这里插入图片描述

4、自连接

特殊的等值连接,来自于一张表

-- 员工的名字和员工的上级名字select e1.ename 员工,e2.ename 上级 from emp e1,emp e2 where e1.mgr = e2.empno
运行结果
在这里插入图片描述

5、外连接

在上述的自连接有一个问题,缺一条记录。那是因为有一条的记录的上级为null,为了解决这一问题,可以使用外连接解决。

-- 员工的名字和员工的上级名字select e1.ename 员工,e2.ename 上级 from emp e1,emp e2 where e1.mgr = e2.empno(+)
运行结果
在这里插入图片描述

就多加了一个+号就解决了这个问题,加号对面的表,也就是上面的e1表是主表,如果主表在左边就是左连接,在右边就是右连接

二、99连接

1、内连接

1.1、交叉连接(笛卡尔积)

和92链接一样,99连接也有笛卡尔积,不过99连接使用指定关键字[inner] cross join实现。

select * from emp inner cross join dept;
运行结果
在这里插入图片描述

Tips:在内连接中可以省略inner关键字。

1.2、自然连接

在92连接中,为了避免出现笛卡尔积现象,可以使用等值连接来避免,当然在99语法中也可以同样避免。在99语法中叫做自然连接,也算是等值连接。使用natural join关键字实现。

select * from emp natural join dept
运行结果
在这里插入图片描述

使用自然连接不需要指定字段,系统会自动按照两个表中的同名字段或主键进行关联。

1.3、join using

上面的自然连接不用指定字段,但是如果有多个同名字段,那么就可以使用指定的字段进行关联,在99语法中使用join using关键字实现。

select * from emp join dept using(deptno)
运行结果
在这里插入图片描述

1.4、非等值连接

和92语法一样99语法也有非等值连接,使用关键字join on实现。join on可以实现等值连接,也可以实现非等值连接。

1.4.1、等值连接

select * from emp e join dept d on e.deptno = d.deptno
运行结果
在这里插入图片描述

1.4.2、非等值连接

select * from emp e join salgrade s on e.sal between s.losal and s.hisal
运行结果
在这里插入图片描述

2、外连接

和内连接不同的是,内连接只要满足条件就可以显示,外连接不仅包含满足条件的还包含不满足条件的,外连接分为左连接和右连接,左连接就是,在不满足条件的情况下包含左边的表的所有记录数据,右连接就是包含右边表的所有记录数据。

99语法的外连接和92语法的外连接稍微不同,99语法中不再是使用+,而且多了一个全连接。

2.1、左连接

在99语法中左连接使用left join

select * from emp e1 left join emp e2 on e1.mgr = e2.empno
运行结果
在这里插入图片描述

2.2、右连接

99语法中右连接使用right join

select * from emp e1 right join emp e2 on e1.mgr = e2.empno
运行结果
在这里插入图片描述

2.3、全连接

在99语法中还有一个全连接,不管满足不满足条件,左边和右边的表都全部显示,相互补充null。使用full join on|using

select * from emp e1 full join emp e2 on e1.mgr = e2.empno
运行结果
在这里插入图片描述

转载地址:http://icsnb.baihongyu.com/

你可能感兴趣的文章
开心做人的方法
查看>>
英文地址的翻译
查看>>
生活在美国:最常有用的英语口语900句
查看>>
投身IT业需具备四项基本素质ZZ
查看>>
轻松面试找到理想员工-非官方的面试技术指南
查看>>
RMI规范--第二 -- 五章
查看>>
RMI规范(6) --(10)
查看>>
我的Blog定制效果和方法
查看>>
每个.Net开发人员应该下载的十种必备工具
查看>>
如何在各种开发语言中调用web service
查看>>
免费WEB服务实例参考
查看>>
老外翻译的中国电影名称(暴笑)
查看>>
金庸刻画的三个极品女人
查看>>
影片的发布格式
查看>>
一千元的智慧--避开人生道路上的陷阱
查看>>
企业隐形规则(收藏)
查看>>
大家看过那个视频女孩子吗?世界末日、太委屈、月亮代表我的心...
查看>>
全球五百强企业官方网站
查看>>
文章写作标准
查看>>
国内计算机刊物标准写作规范和标准
查看>>