select * from dept;
select * from emp;--连接查询连接条件是emp.deptno=dept.deptno
select empno,ename,job sal,emp.deptno,dname,loc 
from emp,dept where emp.deptno=dept.deptno;
--外连接运算符为(+)
��--�� 传统的外连接分为左外连接和右外连接两种
--左外连接
select empno,ename,job sal,dept.deptno,dname,loc 
from emp,dept where emp.deptno(+)=dept.deptno;--右外连接
select empno,ename,job sal,emp.deptno,dname,loc 
from emp,dept where emp.deptno=dept.deptno(+);
--满外连接(全外连接)
select empno,ename,job sal,emp.deptno,dname,loc 
from emp full outer join dept on (emp.deptno=dept.deptno);--如何查得每个员工及其上司的工号和姓名?
select * from emp;
select emp1.empno, emp1.ename,emp1.job,emp2.ename
from emp emp1,emp emp2 where  emp1.mgr=emp2.empno
--会产生笛卡尔集,我们应该避免这种情况
select emp.empno,emp.ename,dept.deptno,dept.dname from 
emp,dept;--自然连接去掉重复列表的等值连接叫做自然连接
select * from dept natural join emp;--使用using指定连接字段
select * from dept join emp using(deptno)--子查询(记住,子查询是内层子查询先做后做外层)
--单行子查询可能使用< > = >= <=  <> 多行子查询不能这样做
select * from emp;select * from emp where sal>(
   select sal from emp where ename='ALLEN'
)select * from emp --返回多值的子查询不能使用< > = >= <=  <>但可以用any,all,in,>all <all >any <any 
select * from emp where sal > all(
  select sal from emp where deptno='30'
)--查询和SMITH,BLAKE在同一个部门的员工信息select * from emp where job in (select job from emp where ename ='SMITH' or ename='BLAKE')
--topN查询前5条记录
select * from emp;
select * from emp where rownum<=5--查询从第6条到第10记录即(分页)
select * from emp where rownum>5 and rownum<=10;--分页错误写法
--高效查询正确写法
select * from (
   select rownum num,emp.* from emp where rownum<=10
) where num>5;