参考链接(非常棒)
摘要
下面主要以两个例子进行说明:
例子1:
表A结构如下:
select * from A
|
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE1UUTRPQzB4TlRJMU5EVTFPVFEzTG1wd1p3PT0uanBn.jpg?w=700&webp=1)
表B结构如下:
select * from B
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE1UZzBPQzB4T1RVNU1Ea3pPRFUzTG1wd1p3PT0uanBn.jpg?w=700&webp=1)
两个表要做连接,就必须有个连接字段,在A表中的Aid和B表中的Bnameid就是两个连接字段。
下图3说明了连接的所有记录集之间的关系:
图3:连接关系图
要注意上图中标志的数字
现在我们对内连接和外连接一一讲解。
1.内连接:利用内连接可获取两表的公共部分的记录,即图3的记录集C
语句如下:
Select * from A JOIN B ON A.Aid=B.Bnameid
运行结果如下图4所示:
图4:内连接数据-共8条记录
其实select * from A,B where A.Aid=B.Bnameid与Select * from A JOIN B ON A.Aid=B.Bnameid的运行结果是一样的。
2.外连接:外连接分为两种,一种是左连接(Left JOIN)和右连接(Right JOIN)
(1)左连接(Left JOIN):即图3公共部分+记录集A1。
语句如下:
select * from A Left JOIN B ON A.Aid=B.Bnameid
运行结果如下图5所示:
图5:左连接数据
结论:内连接得到的数据+左边表格的4条数据(1,4,5,9)
(2)右连接(Right JOIN):即图3公共部分+记录集B1
语句如下:
select * from A Right JOIN B ON A.Aid=B.Bnameid
运行结果如下图6所示:
图6:右连接数据
结论:内连接得到的数据+右边表格的1条数据(11)
其他说明:
select * from B Left JOIN A ON A.Aid=B.Bnameid
等价于
select * from A Right JOIN B ON A.Aid=B.Bnameid
例子2:
select * from test1;
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE5UQXlNQzB4TURJek5ESTJOVEF4TG5CdVp3PT0uanBn.jpg?w=700&webp=1)
select * from test2;
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE5UTTNPUzB4TnpreE5ESTFPVFl5TG5CdVp3PT0uanBn.jpg?w=700&webp=1)
内连接:select * from test1 t1 join test2 t2 on t1.aa = t2.xx;
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE5UWTVNaTAzTXpZeU1EQXdNeTV3Ym1jPS5qcGc%3D.jpg?w=700&webp=1)
左连接:select * from test1 t1 left join test2 t2 on t1.aa = t2.xx;
![【Oracle学习笔记-4】内连接和外连接的区别 【Oracle学习笔记-4】内连接和外连接的区别](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhCekwybHRZV2RsY3pJd01UVXVZMjVpYkc5bmN5NWpiMjB2WW14dlp5ODNNekV3TkRjdk1qQXhOakF4THpjek1UQTBOeTB5TURFMk1ERXlPREl6TVRZeE5qQXlNQzB4TkRVNE56UTVNVGt6TG5CdVp3PT0uanBn.jpg?w=700&webp=1)
有连接:select * from test1 t1 right join test2 t2 on t1.aa = t2.xx;
博客:
淘宝-代做毕设: