ORACLE练习.doc_第1页
ORACLE练习.doc_第2页
ORACLE练习.doc_第3页
ORACLE练习.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

Oracle强化练习之分组函数:-准备工作:使用oracle安装时自带的scott/tiger用户登录后练习。如果不知道scott用户密码的话,如何修改密码:命令行中键入:sqlplus sys/krs as sysdba已连接。SQL alter user scott identified by tiger;用户已更改。-即修改了用户scott的密码为tiger-接着,使用scott/tiger登录数据库,如果遇到用户已锁定的提示,如何解锁:方法一:命令行中键入:sqlplus sys/krs as sysdba已连接。SQLalter user scott account unlock;用户已更改。方法二:第一步:使用PL/SQL,登录名为sys,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择my objects,查看users;第三步:选择scott,右击点击“编辑”;第四步:把“帐户被锁住”或“Account locked”前的勾去掉;(该界面还可以修改密码等)第五步:点击“应用”再点击“关闭”;第六步:重新登录就可以通过验证了;=下面就可以开始:Oracle强化练习之分组函数=1. 显示平均工资为2000的职位select job,avg(sal) from emp group by job having avg(sal)2500;2. 计算工资在2000以上,各种职位的平均工资大于3000的职位及平均工资Select job,avg(sal) From emp where sal2000 group by job having avg(sal)3000;3. 找每个部门的最高和最低的工资Select deptno,max(sal),min(sal) From emp group by deptno;4. 找每个部门中每种职位的最高和最低的工资select deptno,max(sal),min(sal) from emp group by job,deptno;select deptno,job,max(sal),min(sal) from emp where job is notnull group by job,deptno;5. 显示出工作名称(job)中包含MAN的员工平均工资,最高工资,最低工资及工资的和select avg(sal),max(sal),min(sal),sum(sal) from emp where job like %MAN%;6. 显示出20号部门的员工人数select count(*) from emp where deptno=20;7. 显示出平均工资大于2000的部门名称及平均工资Select dname,avg(sal) From dept d,emp e where e.deptno=d.deptno group by dname having avg(sal)2000;8. 显示每个部门每种工作平均工资大于2500的部门及工作Select deptno,job From emp group by deptno,job having avg(sal)2500;9. 显示出工作名称中包含MAN,并且平均工资大于1000的工作名称及平均工资Select job,avg(sal) From emp group by job having avg(sal)1000 and job like%MAN%;10. 显示出平均工资最高的的部门平均工资Select d.dname,a.s From dept d,(select * from (select deptno,avg(sal) s from emp group by deptno order by avg(sal) desc) where rownum=1) a where d.deptno=a.deptno;11. 列出最低工资大于1500的各种工作Select job From emp group by job having min(sal)1500;12. 列出各部门的员工数量及平均工作年限Select deptno,count(*),avg(sysdate-hiredate)/365) From emp group by deptno;Select deptno,avg(months_between(sysdate,hiredate)/12) from emp group by deptno;=数据库Oracle强化练习之多表查询:在select语句中(+)指的是外连接,是连接查询的一种方法。例:select t1.*,t2.* from dept t1,emp t2 where t1.deptno=t2.deptno(+);其中:t1.deptno=t2.deptno(+)代表意思是,即使t2(emp表)中不存在匹配的记录,在t1(dept表)也查询出来。-1. 列出所有雇员的姓名及其直接上级的姓名Select a.ename,a.mgr,b.ename,b.empno From emp a,emp b where a.mgr=b.empno(+);-左连接,将mgr的编号全部显示出来,2. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门Select dept.deptno,dname,ename From emp,dept where emp.deptno(+)=dept.deptno;-右连接,将dept表中的deptno全部显示出来;3. 显示所有部门在NEW YORK(dept表 loc字段)的员工姓名Select e.ename From emp e,dept d Where e.deptno=d.deptno and d.loc=NEW YORK;4. 显示员工SMITH的姓名,部门名称Select e.ename,d.dname From emp e,dept d where e.deptno=d.deptno and e.ename=SMITH;5. 显示员工姓名,部门名称,工资,工资级别(salgrade表 grade字段),要求工资级别大于4级Select e.ename,d.dname,e.sal,s.grade From emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between s.losal and s.hisal and s.grade 4;6. 显示员工KING和FORD管理的员工姓名及其经理姓名Select e1.ename,e2.ename From emp e1,emp e2 where e1.mgr=e2.empno and (e2.ename=KINGor e2.ename=FORD);7. 显示员工名,参加工作时间,经理名,参加工作时间:参加工作时间比他的经理早Select e1.ename,e1.hiredate,e2.ename,e2.hiredate From emp e1,emp e2 where e1.mgr=e2.empno and e1.hiredate15;17. 用*的个数表示员工的工资中包含多少千,如3500,显示*,5600,显示*Select ename,sal,lpad(*,sal/1000,*) From emp;18. 显示员工名,参加工作时间,参加工作6个月后的第一个周一Select ename,hiredate,next_day(add_m

温馨提示

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

评论

0/150

提交评论