码迷,mamicode.com
首页 > 数据库 > 详细

oracle学习篇四:多表查询

时间:2016-06-19 16:51:31      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:


-----------------产生笛卡儿积------------------------------------
select * from emp,dept; --不带条件时,记录数为14*4 =56条记录
select * from emp cross join dept;--交叉连接,同上

select count(*)from emp;

---左连接( 返回包括左表中的所有记录和右表中联结字段相等的记录 )
select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno(+);
select d.dname,e.ename from emp e left join dept d on e.deptno=d.deptno;
select * from emp e left outer join dept d on e.deptno=d.deptno;

--右连接(返回包括右表中的所有记录和左表中联结字段相等的记录) 
select d.dname,e.ename from emp e,dept d where e.deptno(+)=d.deptno;
select d.dname,e.ename from emp e right join dept d on e.deptno=d.deptno;
select * from emp e right outer join dept d on e.deptno=d.deptno;

---默认/内连接(只返回两个表中联结字段相等的行)
select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno;
select * from emp e inner join dept d on e.deptno=d.deptno;--内连接


select * from emp e inner join dept d using(deptno);---使用using替换表达式 

--自连接(自动对两个表按照同名的列进行内连接)
select * from emp natural join dept;


---全外连接(合并左右连接)
select * from emp full outer join dept using(deptno);

---合并结果集:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型

select empno from emp UNION select deptno from dept;

select empno,ename from emp UNION ALL select deptno,dname from dept;

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

oracle学习篇四:多表查询

标签:

原文地址:http://www.cnblogs.com/brant/p/5598152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!