左外联接:左外联接的时候保证左面的表的数据是完整的然后从右面的表中符合条件的链接到左面的表当中。a=b(+)这个是左连接相当于 a letf join b on右外连接:右外连接的话是保证右面的所有数据行连接以后都存在,从左面的表里面把符合条件的行链接到右表的操作。a(+)=b这个是右连接相当于 a right join b on全连接:a(+)=b(+)这个是全链接相当于 a join b on
那么全连接就是保证左右表的所有数据行都存在与连接后的表当中的连接。
示例:
1、等连接 问题:显示员工姓名及其所在部门的名称 分析: 姓名 - emp - ename 部门名称 - dept - dname 关系 emp(deptno) <-> dept(deptno) select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno; 2、外连接 问题:查询所有部门名称和对应的员工姓名,若该部门没有员工,只显示部门名称。 分析: 部门名称 - dept -dname 员工姓名 - emp - ename select d.dname,e.ename from emp e,dept d where e.deptno(+) = d.deptno; 注意:Oracle中使用(+)表示外连接,可以理解(+)所在字段的对侧(以=分开左右两部分)为主要显示信息。 3、自连接 问题:显示员工姓名及其上级员工的姓名 分析:员工姓名 - emp -ename select t1.ename,t2.ename from emp t1,emp t2 where t1.mgr = t2.empno; 4、子查询模式 问题:查询工资高于公司平均工资的所有员工 分析:公司的平均工资 select avg(sal) from emp; select * from emp where sal>(select avg(sal) from emp); // 关联子查询