where
emp.depno(+)=dept.deptno;
如果在dept.deptno中有的数值在emp.deptno中没有值,则在做外连接时, 结果中ename会产生一个空值。(emp.deptno=10) 2.
select
ename,dept.deptno,loc from
emp,dept where
emp.depno=dept.deptno(+);
如果在emp.deptno中有的数值在dept.deptno中没有值,则在做外连接时, 结果中loc会产生一个空值。。(dept.deptno=20)
5.自连接
自连接是指同一张表的不同行间的连接。该连接不受其他表的影响。用自连接可以比较同一张表中不同行的某一列的值。因为自连接查询仅涉及到某一张表与其自身的连接。所以在from子句中该表名出现两次,分别用两个不同的别名表示,两个别名当作两张不同的表进行处理,与其它的表连接一样,别名之间也使用一个或多个相关的列连接。为了区分同一张表的不同行的列,在名前永别名加以限制。 select
worker.ename,
manager.ename manager from
emp worker, emp manager where
work.mgr=manager.empno; 6.集合运算
基合运算符可以用于从多张表中选择数据。
①UNION运算
用于求两个结果集合的并集(两个结果集合的所有记录),并自动去掉重复行。 select ename,sal from account where sal>2000 union
select ename,sal from research where sal>2000 union
select ename,sal from sales where sal>2000; 注:ename,sal 是必须一致的。
②UNION ALL运算
用于求两个结果集合的并集(两个结果集中的所有记录),并且不去掉重复行。 select ename,sal from account where sal>2000 union
select ename,sal from research where sal>2000
union
select ename,sal from sales where sal>2000; ③INTERSECT运算
intersect运算返回查询结果中相同的部分。
各部门中有哪些相同的职位? select Job from account intersect
select Job from research intersect
select Job from sales;
④MINUS运算
minus返回两个结果集的差集。(在第一个结果集中存在的,而在第二个结果集中不存在的行。)
有那些职位是财务部中有,而在销售部门中没有? select Job from account minus
select Job from sales;