一,外链接
定义:
- 左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。
- 右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配到的行中列显示为null。
- 完全外连接:左右表都不加限制。即右外连接的结果为:左右表匹配的数据+左表没有匹配到的数据+右表没有匹配到的数据。
语法:
- left/right/full outer join …on
- left/right/full join …on
Oracle中的**(+)**
(+)可以理解为补充的意思,加在哪张表的列上就代表这个表的列为补充.
加在右表的列上代表右表为补充,为左连接.
加在左表的列上代表左表为补充,为右连接
注意:完全外连接中不能使用(+)
二,子查询
- 子查询先执行里面的SQL语句,再执行外面SQL语句。
- 子查询的效率比较低,一般建议使用join替换子查询。
- 子查询时,MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句再临时表中查询记录。查询完毕后,MySQL需要撤销这些临时表。因此,子查询的速度会受到一定的影响。如果查询的数据量比较大,这种影响就会随之增大。