oracle经典练习题.doc_第1页
oracle经典练习题.doc_第2页
oracle经典练习题.doc_第3页
oracle经典练习题.doc_第4页
oracle经典练习题.doc_第5页
免费预览已结束,剩余50页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

oracle练习题实验一练习1、请查询表DEPT中所有部门的情况。select * from dept;练习2、查询表DEPT中的部门号、部门名称两个字段的所有信息。select deptno,dname from dept;练习3、请从表EMP中查询10号部门工作的雇员姓名和工资。select ename,sal from emp where deptno=10;练习4、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。select ename,sal from emp where job=CLERK or job=MANAGER;练习5、请在EMP表中查找部门号在1030之间的雇员的姓名、部门号、工资、工作。select ename,deptno,sal,job from emp where deptno between 10 and 30;练习6、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。select ename,sal,job from emp where ename like J%;练习7、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。select ename,job,sal from emp where sal=2000;练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。select ename,job,sal from emp where sal(select sal from emp where ename=JONES);练习11、列出没有对应部门表信息的所有雇员的姓名、工作以及部门号。select ename,job,deptno from emp where deptno not in (select deptno from dept);练习12、查找工资在10003000之间的雇员所在部门的所有人员信息select * from emp where deptno in (select distinct deptno from emp where sal between 1000 and 3000);练习13、雇员中谁的工资最高。select ename from emp where sal=(select max(sal) from emp);select ename from (select * from emp order by sal desc) where rownum=1;*练习14、雇员中谁的工资第二高(考虑并列第一的情况,如何处理)。select ename from (select ename ,sal from (select * from emp order by sal desc) where rownum=2 order by sal) where rownum=1;实验二1 查询所有雇员的姓名、SAL与COMM之和。select ename,sal+nvl(comm,0) “sal-and-comm” from emp;2 查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate=to_date(1981-01-01,yyyy-mm-dd) group by deptno;4 查询所有在CHICAGO工作的经理MANAGER和销售员SALESMAN的姓名、工资select ename,sal from emp where (job=MANAGER or job=SALES) and deptno in (select deptno from dept where loc=CHICAGO);5 查询列出来公司就职时间超过24年的员工名单select ename from emp where hiredate=add_months(sysdate,-288);6 查询于81年来公司所有员工的总收入(SAL和COMM)select sum(sal+nvl(comm,0) from emp where to_char(hiredate,yyyy)=1981;7 查询显示每个雇员加入公司的准确时间,按年月日 时分秒显示。select ename,to_char(hiredate,yyyy-mm-dd hh24:mi:ss) from emp;8 查询公司中按年份月份统计各地的录用职工数量select to_char(hiredate,yyyy-mm),loc,count(*) from emp,deptwhere emp.deptno=dept.deptno group by to_char(hiredate,yyyy-mm),loc;9 查询列出各部门的部门名和部门经理名字select dname,ename from emp,dept where emp.deptno=dept.deptno and job=MANAGER;10 查询部门平均工资最高的部门名称和最低的部门名称select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by avg(sal) ) where rownum=1)union all select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by avg(sal) desc ) where rownum(select hiredate from emp where empno=7521) order by hiredate ) where rownum=1) e,deptwhere e.deptno=dept.deptno实验三、1 建立一个表(表名自定),表结构与EMP相同,没有任何记录。create table my_emp as select * from emp;2 用Insert语句输入5条记录,并提交。3 扩大该表的记录数到约40条,并使雇员号不重复;每个雇员都有所属部门,雇员在同一部门的经理是同一人。insert .update commit4 建立一个与DEPT表结构和记录完全相同的新表,并与前项新表建立参照完整性约束。alter table my_dept add( constraint s1 primary key(deptno);alter table my_emp add(constraint s2 foreign key(deptno) references dept(deptno);5 对在NEW YORK工作的雇员加工资,每人加200。6 *如果雇员姓名与部门名称中有一个或一个以上相同的字母,则该雇员的COMM增加500。update my_emp aset comm=NVL(comm,0)+500where a.ename(select translate(a.ename,b.dname,CHR(27)from my_dept b where b.deptno=a.deptno);-a.deptno与b.deptno必须有主外键连接,否则可能出错,为什么?commit;7 删除部门号为30的记录,并删除该部门的所有成员。delete from emp where deptno=30;delete from dept where deptno=30;commit8 新增列性别SEX,字符型。alter table emp add(sex char(2);9 修改新雇员表中的MGR列,为字符型。该列数据必须为空alter table emp modify(mgr varchar2(20);10 试着去删除新表中的一个列。alter table my_emp drop (comm);实验四、1 查询部门号为30的所有人员的管理层次图。select level,ename from empconnect by mgr=prior empnostart with deptno=30 and job=MANAGER;2 查询员工SMITH的各个层次领导。select level,ename from empconnect by prior mgr= empnostart with ENAME=SMITH;3 查询显示EMP表各雇员的工作类型,并翻译为中文显示用decode函数4 *查询显示雇员进入公司当年是什么属相年(不考虑农历的年份算法)用decode函数5 建立一个视图myV_emp,视图包括myEMP表的empno、ename、sal,并按sal从大到小排列。create view myV_EMP as select empno,ename,sal from emp;6 定义一个mySeq,对select mySeq.nextval,my_emp.* from my_emp的执行结果进行说明。7 定义序列mySeq、myEMP、myV_emp的同义词,能否用同义词对上述对象进行访问。8 在myEMP表中建立ename的唯一性索引。9 如何在sql*plus中,运行sql的脚本(即后缀为.sql的文件)oracle练习题和答案 笔记2009年01月04日 星期日 17:50oracle练习题和答案 笔记使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)-1.选择部门30中的所有员工.select * from emp where deptno=30; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7900 JAMES CLERK 7698 03-12月-81 950 30-2.列出所有办事员(CLERK)的姓名,编号和部门编号.Select empno,ename,deptno from emp where job=CLERK; EMPNO ENAME DEPTNO- - - 7369 SMITH 20 7876 ADAMS 20 7900 JAMES 30 7934 MILLER 10-3.找出佣金高于薪金的员工.select * from emp where comm sal;比较忽略comm为空的值select * from emp where nvl(comm,0)sal; nvl(col1,p) 要求col1 和 p的类型是一致的 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30-4.找出佣金高于薪金的60%的员工.select * from emp where nvl(comm,0)(sal*0.6);select * from emp where comm sal * 60 / 100; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30-5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.select * from emp where (deptno=10 and job=MANAGER) or (deptno=20 and job=CLERK); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7369 SMITH CLERK 7902 17-12月-80 800 20 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7876 ADAMS CLERK 7788 23-5月 -87 1100 20-6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.select * from emp where (deptno=10 and job=MANAGER)or (deptno=20 and job=CLERK)or (job not in (MANAGER,CLERK) and sal=2000); ( job MANAGER and job CLERK and sal = 2000) != EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7369 SMITH CLERK 7902 17-12月-80 800 20 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 7902 FORD ANALYST 7566 03-12月-81 3000 20-7.找出收取佣金的员工的不同工作.select distinct job from emp where nvl(comm,0)0; distinct 消除重复值JOB-SALESMAN-8.找出不收取佣金或收取的佣金低于100的员工.select * from emp where nvl(comm,0)100;select * from emp where comm is null or comm 100; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO- - - - - - - - 7369 SMITH CLERK 7902 17-12月-80 800 20 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10这个不对 :select * from emp where comm 144;select * from emp where hiredate 120;select ename,hi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论