设为首页 加入收藏

TOP

Oracle学习笔记5--多表查询(二)
2014-11-24 02:33:05 来源: 作者: 【 】 浏览:4
Tags:Oracle 学习 笔记 5-- 查询
E KING CLARK KING SCOTT JONES KING TURNER BLAKE ADAMS SCOTT JAMES BLAKE FORD JONES MILLER CLARK 14 rows selected

上面使用了左连接,虽然king的值不满足连接条件,依然可以再结果中显示。

自连接:

上面的查询已经使用了自连接的连接方式。自连接,自已与自己的连接,与两张表的查询方式没有区别,不在赘述。

SQL:1999 语法对SQL的支持。

交叉连接:

cross join ,产生笛卡尔积。

SQL语句:

select * from emp cross join dept

没有给出查询条件,使用cross join 来连接两个表。查询结果满足笛卡尔乘积,即,两个表中每一条记录都要连接在一起。

自然连接:

natural join ,自动进行关联字段的匹配。会以两个表中有相同名字的列为条件创建等值连接。但是,两个表中只是列名相同而数据的类型不同,则连接出错。

SQL语句:

SQL> select * from emp natural join dept ;

雇员表和员工表会自动的按照deptno 进行连接。查询结果与语句 select * from emp e , dept d

where d.deptno = e.deptno ; 相同。但是如果两张表中有多个相同的列名,此时的查询结果就是多个列名连

接后共同作用产生的结果。此时需要去掉natural ,使用using(列名)来指定,表要按照哪一列来连接。也可以使用on来指定连接条件。SQL> select * from emp e join dept d on(e.deptno = d.deptno);结果都是一样的。

使用on字句创建多表连接语法。

SELECT 列名1, 列名2, 列名3

FROM table1e

JOIN table2 d

ON d.列名 =e.列名

JOIN table3 l

ON d.列名 =l.列名;

右外连接、左外连接、满外连接的语法:

SELECT 列名1, 列名2, 列名3

FROM table1 e

ROGHT OUTER JOIN table2 d

ON (e.列名=d.列名)

例:

SQL> select ename , dname
2 from emp e right outer join dept d
3 on(e.deptno = d.deptno);

 
ENAME      DNAME
---------- --------------
CLARK      ACCOUNTING
KING       ACCOUNTING
MILLER     ACCOUNTING
JONES      RESEARCH
FORD       RESEARCH
ADAMS      RESEARCH
SMITH      RESEARCH
SCOTT      RESEARCH
WARD       SALES
TURNER     SALES
ALLEN      SALES
JAMES      SALES
BLAKE      SALES
MARTIN     SALES
           OPERATIONS
 
15 rows selected

SELECT 列名1, 列名2, 列名3

FROM table1 e

LEFT OUTER JOIN table2 d

ON (e.列名=d.列名) ;

SELECT 列名1, 列名2, 列名3

FROM table1 e

FULL OUTER JOIN table2 d

ON (e.列名=d.列名) ;

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇DataPump的导入和导出数据(ORA-3.. 下一篇Oracle11gSecureFiles说明

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: