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

来源:互联网 发布:mac战网怎么切换大小写 编辑:程序博客网 时间:2024/05/21 06:13

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


等值连接:用代码来说就是用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


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


原创粉丝点击