sql关联查询

1.内连接

是最普遍的一种连接方式,选出相连的两张表都互相满足连接条件的数据。

写法:select a inner join b on a.id=b.aid (其中inner可忽略)

举例:a表:b表:

查询语句:SELECT * from a inner join b on a.id=b.id。

将a表的每一条数据拿出来,遍历b表进行对比,满足条件数据的返回。

结果:


2.外连接

比较常用的且非常有用的连接方式,有3种外连接方式。

2.1左外连接

写法:select * from a left outer join b on a.id=b.aid (outer可忽略)

意思就是查询结果显示a表所有数据,加上b表满足a.id=b.aid的数据,若b表没有满足条件的数据,设为null。

举例:a表:b表:

查询语句:SELECT * from a left outer join b on a.id=b.id。

将a表的每一条数据拿出来,遍历b表进行对比,将b表中满足条件的数据加到a表数据后面作为查询结果,b表中不满足条件的数据把null加到a表数据后面作为查询结果。

结果:

2.2 右外连接

写法:select * from a right outer join b on a.id=b.aid (outer可忽略)

意思就是查询结果显示b表所有数据,加上a表满足a.id=b.aid的数据,若a表没有满足条件的数据,设为null。

举例:a表:b表:

查询语句:SELECT * from a right outer join b on a.id=b.id。

将b表的每一条数据拿出来,遍历a表进行对比,将a表中满足条件的数据加到b表数据后面作为查询结果,a表中不满足条件的数据把null加到b表数据后面作为查询结果。

结果:

其实右外连接和左外连接都一个模子里刻出来的,将表对换下右外连接马上变左外连接。

2.3 全连接

全连接会返回相关联的两张表的所有关联数据,如果某行在另一张表中没有匹配的值,则设为null。

相当于左外连接+右外连接。

写法示例:SELECT * from a full outer join b on a.id=b.id。(outer可忽略)

注意:mysql不支持全连接


3 自连接

自连接意思是把自身表当成另外一张表看待,互相关联查询,连接方式可以使用以上的内外连接。
这种连接方式可以解决很多奇怪的问题。

a表:b表:

查询语句:SELECT ab.* from a ab,a ac where ab.id>ac.id

结果:



你可能感兴趣的:(Oracle学习笔记)