个人学习oracle数据库内连接和外连接心得

小白一枚 ,第一次尝试写博客  不喜勿喷


等值连接:用代码来说就是用where 关键字连表,

内连接:用代码来说就是用join on  ,


例如有emp   dept两张表    字段如下:





等值连接sql语句:

select * from emp,dept where emp.deptno=dept.deptno


内连接sql语句:

select * from emp join  dept on emp.deptno=dept.deptno


查询结果:



查询结果一模一样,由此可以看出内连接跟等值连接的作用是一样的。

注意:多表查询的性能是很差的,当然,性能差是有一个前提的:数据量大。



接下来是外连表 ,有三种方式(有A B两张表):

左连表查询:A left  join  B on    或者   A left outer join B on  

右连表查询:A right  join B on   或者   A right outer join  B  on

全连接:full join 等价于(full outer join)查询结果等于左外连接和右外连接的和


在这里我觉得有必要说明一下,因为我个人在学习外连接的方式的时候迷糊过,为什么左连表跟右连表查出来的是这样的呢?于是我自己琢磨了一下,得出下面的结论:

左连表是把左表为主表     右连表是把右表作为主表,下面我会用图告诉你们的区别


左连表sql语句(emp表,dept表):

select * from emp left join dept on emp.deptno =dept.deptno




右连表sql:

select * from emp right join dept on emp.deptno=dept.deptno



从图可以看出左连接跟右连接的区别,为什么左连接跟右连接不一样呢?

因为左连表的话   (select * from emp left join dept on emp.deptno =dept.deptno),

在这里emp表为主表  所以查出来的字段必须是跟emp表的字段对应,假如没有,就用null值补充,在

右连表这里就可以看得很清楚,(select * from emp right join dept on emp.deptno=dept.deptno)

右连表把dept表作为主表,emp表中没有一个人是deptno为40的 但是还是显示出来了,没有数据为null


全外连接sql:

select * from emp full join dept on emp.deptno=dept.deptno


在这里没有区别谁是主表  就是查左连表跟右连表的总和


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值