A表

B表

1. --内连接 把匹配的信息全部查出来
select * from A a inner join B b on a.id = b.id;
获取A表和B表中id相对应的数据(仅显示id对应的匹配数据)

2. --左连接 包含左边表所有记录,右边所有的匹配的记录,如果没有则用空补齐(简写的时候+在右边)(三种写法都可以)
select * from A a left join B b on a.id = b.id;
select * from A a left outer join B b on a.id = b.id;
select * from A a,B b where a.id = b.id(+);
(查询A表所有数据,查询B表符合条件数据,,如果没有使用空补齐,如果B表数据多,删除不匹配数据)
(A表数据多,B表数据少)
(A表在左,B表在右)

将A、B表互换位置
(A表数据多,B表数据少)
(B表在左,A表在右)
select * from B b left join A a on a.ID = b.ID;
(查询B表所有数据,查询A表符合条件数据,如果没有使用空补齐,如果A表数据多,删除不匹配数据)

3. --right join 右连接 包括右边表所有记录,匹配左边表的记录,如果没有则以空补齐(简写的时候+在左边)(两种写法)
select * from A a right join B b on a.id = b.id;
select * from A a, B b where a.id(+) = b.id;
(A表数据多,B表数据少)
(A表在左,B表在右)
(查询B表所有数据,查询A表符合条件数据,如果没有使用空补齐,如果A表数据多,删除不匹配数据)

select * from B b right join A a on a.ID = b.ID;
(A表数据多,B表数据少)
(B表在左,A表在右)
(查询A表所有数据,查询B表符合条件数据,,如果没有使用空补齐,如果B表数据多,删除不匹配数据)

从结果看来:
select * from A a left join B b on a.id = b.id;
和
select * from B b right join A a on a.ID = b.ID;
查询结果结构相同,但是A、B表的顺序不同
select * from B b left join A a on a.ID = b.ID;
和
select * from A a right join B b on a.id = b.id;
查询结果结构相同,但是A、B表的顺序不同
4. --full join 全连接 意思是左右表所有的记录全部显示出来
select * from A a full join B b on a.id = b.id;

select * from B b full join A a on a.id = b.id;

本文深入解析SQL中的四种连接类型:内连接、左连接、右连接和全连接,详细阐述每种连接方式的工作原理及应用场景,帮助读者理解如何有效查询跨表数据。
892

被折叠的 条评论
为什么被折叠?



