oracle查询
-
minus是获取第一张表独有的数据
intersect是获取两张表中都有的数据
union是整合两张表的数据,都有的只显示一次
union all是纯粹的两张表数据整合
- 多表查询
- from a,b 返回所有满足where条件的行
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 from scott.emp a, scott.dept b where a.deptno = b.deptno;
- from a,b 返回所有满足where条件的行
2.left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
select * from A left join B on A.aID = B.bID
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
3.right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
select * from A right join B on A.aID = B.bID
和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
4.inner join(等值连接) 只返回两个表中联结字段相等的行
select * from A inner join B on A.aID = B.bID
只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
5.full join 全连接 意思是左右表所有的记录全部显示出来
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e fulljoin dept d on e.deptno=d.deptno orderby e.empno;
这条SQL语句采用全连接,查询出左表和右表所有的值出来
6.+在左边 为右连接
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e,dept d where e.deptno(+)=d.deptno orderby e.empno;

7.+在右边 为左连接
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e,dept d where e.deptno=d.deptno(+) orderby e.empno;


浙公网安备 33010602011771号