oracle数据库(连接)

来源:互联网 发布:java口袋精灵英雄大陆 编辑:程序博客网 时间:2024/06/07 22:30
1.左连接、右连接
(+)代表连接方向,左连接,左边的表是主表;右连接,右边的表是主表;主表的数据可以完全查出来。
(+)=:放在等号左边的是右连接
=(+):放在等号右边的是左连接
但是不用刻意区分是左还是右,只是根据查询结果而定,如果发现有些需要的数据没有显示出来,就是用此符号更改连接方向
这种符号是oracle数据库独有的,其他数据库不能使用
查询雇员的姓名、职位和管理人员名字:
select e1.ename, e1.job, e2.ename mname from emp e1, emp e2 where e1.mgr= e2.empno;

使用左连接查询:
select e1.ename, e1.job, e2.ename mname from emp e1, emp e2 where e1.mgr = e2.empno(+);

使用右连接查询:
select e1.ename, e1.job, e2.ename mname from emp e1, emp e2 where e1.mgr (+)= e2.empno;

2.sql:1999语法(其他数据库可以使用)
1.交叉连接(cross join):用于产生笛卡尔积
SELECT * FROM emp cross JOIN dept;

2.自然连接(natural join):自动找到匹配的关联字段,消除笛卡尔积
SELECT * FROM emp natural join dept;

3.join ...using子句:用户自己指定一个消除笛卡尔积的关联字段:
SELECT * FROM emp join dept USING(deptno);

4.join ...on子句:用户自己指定一个可以消除笛卡尔积的关联条件,和where作用相似:
SELECT * FROM emp join dept on(emp.deptno=dept.deptno);

5.左外连接 left outer join ... on
SELECT * FROM emp left outer JOIN dept ON(emp.deptno= dept.deptno);

6.右外连接 right outer join ... on
SELECT * FROM emp RIGHT outer JOIN dept ON(emp.deptno= dept.deptno);

7. 全连接FULL OUTER JOIN .... on
select * from emp FULL OUTER JOIN dept on emp.deptno=dept.deptno

原创粉丝点击