关于Oracle数据库的学习记录:
十五、多表查询----表的连接表的连接主要分为两种形式:**内连接(等值连接):所有满足条件的数据都会被显示出来**外连接(左外连接、右外连接、全外连接):控制左表与右表的数据是否全部显示1.内连接----之前使用的都是等值连接SELECT e.empno,e.ename,e.job,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno;2.外连接让等值判断左右两边有以便的数据可以全部显示出来,如果要想实现外链接,则需要使用"(+)"的语法完成:**左外链接:字段=字段(+);**右外连接:字段(+)=字段;范例:观察左外连接SELECT e.empno,e.ename,e.job,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno(+);此时,可以显示全部的雇员信息,但是由于没有对应的部门数据,所以此行记录的部门数据为空范例:观察右外连接SELECT e.empno,e.ename,e.job,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno;发现此时的程序,所有的部门信息会进行显示,但是由于此部门没有雇员,所以雇员的数据为空在实现外连接的过程中,不建议刻意区分左连接或右连接,一切以数据的查询结果为主,如果发现数据的查询结果之中缺少了内容,那么就利用外连接来控制范例:查询每个雇员的姓名、职位、领导姓名确定要使用的数据表 |-emp表:雇员的姓名、职位 |-emp表:领导姓名(雇员姓名)确定已知的关联字段 |-雇员与领导:emp.mgr=memp.empno;SELECT e.ename,e.job,m.ename FROM emp e,emp m WHERE e.mgr=m.empno;发现此时的数据显示不完整,使用外连接SELECT e.ename,e.job,m.ename FROM emp e,emp m WHERE e.mgr=m.empno(+);这种自己关联自己的查询,也称为自身关联有多少张表,就必须消除笛卡尔积的重复数据
