一、内连接和外连接
内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下:Oracle代码
1. select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
Oracle代码
1. select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
Oracle代码
1. select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
Oracle代码
1. select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
Oracle代码
1. select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
Oracle代码
1. select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;
· 当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
· (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
· 当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
· (+)操作符只能适用于列,而不能适用于表达式。
· (+)操作符不能与or和in操作符一起使用。
· (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。
(1)、使用(+)操作符执行左外连接 当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,示例如下:Oracle代码
1. select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
Oracle代码
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;