ORACLE关联查询


关联查询多张表,而表与表之间是有联系的,是通过字段中的数据的内在联系来发生,而不是靠相同的字段名来联系的或者是否有主外键的联系是没有关系的,

  select dname,ename from emp,dept;

  笛卡尔积  (无意义的)

  --当2个表作关联查询的时候一定要写关联的条件

  --N个表 关联条件一定有N-1个

  select dname,ename from mydept,myemp

  where mydept.no = myemp.deptno;

  多表查询的时候一定要有关联的条件

  --使用的表的全名

  select dname,ename from emp,dept

  where emp.deptno = dept.deptno ;

  --使用表的别名

  select dname,ename,a.deptno from emp a,dept b

  where a.deptno = b.deptno and a.deptno = 10;

  --等值连接(内连接-两个表的数据作匹配a.deptno = b.deptno )

  select dname,ename,a.deptno from

  emp a inner join dept b

  on a.deptno = b.deptno;

  where a.deptno = 10;

  --on写连接条件的

  --where中写别的条件

  --使用where/on

  select dname,ename,a.deptno from emp a,dept b

  where a.deptno = b.deptno and a.deptno=10;

  --on中写连接条件

  --where中写其他的条件

  select dname,ename,a.deptno from

  emp a inner join dept b

  on a.deptno = b.deptno

  where a.deptno = 10 ;

  --外连接

  左外连接 右外连接  全外连接

  (+)写法只有在ORACLE中有效

  select dname,ename,b.deptno

  from emp a,dept b

  where a.deptno(+) = b.deptno;

  --标准写法

  select dname,ename,b.deptno

  from emp a right outer join dept b

  on a.deptno = b.deptno;

  select dname,ename,b.deptno

  from emp a,dept b

  where a.deptno = b.deptno(+);

  --标准写法

  select dname,ename,b.deptno

  from emp a left outer join dept b

  on a.deptno = b.deptno;

  --标准写法(全外联)

  select dname,ename,b.deptno

  from emp a full outer join dept b

  on a.deptno = b.deptno;

  --自连接

  select a.ename as 员工姓名,b.ename as 经理名字 from emp a,emp b

  where a.mgr = b.empno(+);

  a.empno = b.mgr  ???????


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3