设为首页 加入收藏

TOP

ORACLE循序渐进讲解(第二讲)(二)
2014-11-23 18:00:15 来源: 作者: 【 】 浏览:165
Tags:ORACLE 循序渐进 讲解 第二
AME JOB SAL DEPTNO ---------- --------- --------- ------ CLARK MANAGER 2450.00 10 BLAKE MANAGER 2850.00 30 JONES MANAGER 2975.00 20 KING PRESIDENT 5000.00 10 MILLER CLERK 1300.00 10 JAMES CLERK 950.00 30 ADAMS CLERK 1100.00 20 SMITH CLERK 1800.00 20
9、显示工资比部门30的所有员工的工资高的员工姓名、工资和部门号。
ENAME            SAL DEPTNO
---------- --------- ------
JONES        2975.00     20
SCOTT        3000.00     20
KING         5000.00     10
FORD         3000.00     20
或者
SQL> select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);
ENAME            SAL DEPTNO
---------- --------- ------
JONES        2975.00     20
SCOTT        3000.00     20
KING         5000.00     10
FORD         3000.00     20

10、查询与SMITH部门和岗位完全相同的所有雇员
SQL> select ename from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');
ENAME
----------
SMITH
ADAMS

11、查询高于自己部门的平均工资的员工信息。
SQL> select ename,sal,svg "部门平均工资" from emp,(select deptno,avg(sal) svg from emp group by deptno) t where sal>svg and emp.deptno=t.deptno;
ENAME            SAL       部门平均工资
---------- --------- ------------
ALLEN        1600.00 1566.6666666
JONES        2975.00         2375
BLAKE        2850.00 1566.6666666
SCOTT        3000.00         2375
KING         5000.00 2916.6666666
FORD         3000.00         2375
6 rows selected

12、修改员工scott的岗位、工资、补助与smith员工一样。
SQL> update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';
1 row updated

13、oracle分页。
SQL> select * from emp where empno in(select empno from (select empno,rownum rn from (select empno from emp order by sal desc) where rownum<=10) t where t.rn>=6);
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7782 CLARK      MANAGER    7839 1981-06-09    2450.00               10
 7844 TURNER     SALESMAN   7698 1981-09-08    1500.00      0.00     30
 7934 MILLER     CLERK      7782 1982-01-23    1300.00     34.56     10
 7499 ALLEN      SALESMAN   7698 1981-02-20    1600.00    300.00     30
 7369 SMITH      CLERK      7902 1980-12-17    1800.00               20
14、用查询结果创建新表
SQL> create table emp1(id,name) as select empno,ename from emp;
Table created
Executed in 0.532 seconds

SQL> select * from emp1;
   ID NAME
----- ----------
 7369 SMITH
 7499 ALLEN
 7521 WARD
 7566 JONES
 7654 MARTIN
 7698 BLAKE
 7782 CLARK
 7788 SCOTT
 7839 KING
 7844 TURNER
 7876 ADAMS
 7900 JAMES
 7902 FORD
 7934 MILLER
14 rows selected
15、合并查询。(union、union all、intersect、minus) (1)union 取两个结果集的并集,会自动去掉结果集中重复行。
SQL> select empno id,ename name from emp
  2  union
  3  select id,name from emp1;
   ID NAME
----- ----------
 7369 SMITH
 7499 ALLEN
 7521 WARD
 7566 JONES
 7654 MARTIN
 7698 BLAKE
 7782 CLARK
 7788 SCOTT
 7839 KING
 7844 TURNER
 7876 ADAMS
 7900 JAMES
 7902 FORD
 7934 MILLER
14 rows selected
(2)union all 取两个结果集的并集,不会去掉结果集中重复行。
SQL>  select empno id,ename name from emp
  2   union all
  3   select id,name from emp1
  4  ;
   ID NAME
----- ----------
 7369 SMITH
 7499 ALLEN
 7521 WARD
 7566 JONES
 7654 MARTIN
 7698 BLAKE
 7782 CLARK
 7788 SCOTT
 7839 KING
 7844 TURNER
 7876 ADAMS
 7900 JAMES
 7902 FORD
 7934 MILLER
 7369 SMITH
 7499 ALLEN
 7521 WARD
 7566 JONES
 7654 MARTIN
 7698 BLAKE
   ID NAME
----- ----------
 7782 CLARK
 7788 SCOTT
 7839 KING
 7844 TURNER
 7876 ADAMS
 7900 JAMES
 7902 FORD
 7934 MILLER
28 rows selected
(3)intersect 取两个结果的交集。
SQL>  select ename,sal from emp where sal>2500
  2    intersect
  3    select ename,sal from emp where job='MANAGER';
ENAME            SAL
---------- ---------
BLAKE        2850.00
JONES        2975.00
(4)minus 取两个结果的相
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle 11g安装图文攻略 下一篇oraclerman异机恢复

评论

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