oracle练习题Word文档格式.docx

上传人:b****6 文档编号:17765827 上传时间:2022-12-09 格式:DOCX 页数:16 大小:94.09KB
下载 相关 举报
oracle练习题Word文档格式.docx_第1页
第1页 / 共16页
oracle练习题Word文档格式.docx_第2页
第2页 / 共16页
oracle练习题Word文档格式.docx_第3页
第3页 / 共16页
oracle练习题Word文档格式.docx_第4页
第4页 / 共16页
oracle练习题Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

oracle练习题Word文档格式.docx

《oracle练习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《oracle练习题Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

oracle练习题Word文档格式.docx

fromemp

groupbydeptno

havingavg(sal)>

2000);

--查询出ward的工作所在地

SELECTloc

WHEREename='

WARD'

--查询出工资比ADAMS高的所有人、部门、所在地

SELECTa.ename,b.dname,a.sal

FROMempa,deptb

WHEREa.deptno=b.deptno

ANDa.sal>

SELECTsal

ADAMS'

--查询出工资排名第7的员工信息

FROM(

SELECTrank()OVER(ORDERBYsalDESC)ASrk,emp.*

WHERErk=7;

/*minue:

两个结果值相减,

uniou:

两个结果集拼到一起

(1~7)-(1~6)=排名第7

*/

--查询与部门20岗位不同的员工工资

SELECTsal,job,deptno

WHEREjobNOTIN(

SELECTjob

WHEREdeptno=20

--验证--20部门的岗位

/*selectjob

fromemp

wheredeptno=20;

--查询与smith部门岗位完全相同的员工、工作、工资

SMITH'

ANDjobIN(

--查询emp表中的所有信息

select*

fromemp;

--查询emp表中的员工和工资

selectename,sal

--查询emp表中部门编号为20的并且sal大于3000的所有员工信息

wheredeptno=20andsal>

3000;

--查询emp表中部门编号为20的或者sal大于3000的所有员工信息

wheredeptno=20orsal>

--使用betweenand查询工资在2000到4000之间的员工

wheresalbetween2000and4000;

--使用in查询部门编号10,20的所有员工

wheredeptnoin(10,20);

--使用like查询所有名字中包括W的员工信息

select*

whereenamelike'

%W%'

--使用like查询所有员工名字中的第二子字母为W的员工信息

whereenamelike'

_W%'

--查询所有员工信息并按照部门编号和工资进行排序

orderbydeptno,sal;

--显示员工共工资上浮20%的结果

selectsal+sal*0.2

/*最后一题的另一种思路

minue:

--11显示emp表的员工以及工资和奖金的和

--12显示dept表的容,使用别名将表头转换成中文显示

--13查询员工和工资,并按工资从小到大排序

--14查询员工和雇佣日期,并按雇佣日期排序,后雇佣的先显示

--15查询员工信息,先按部门标号从小到大排序,再按雇佣日期的先后排序

多表查询练习

/*多表查询练习*/

select*fromempwherejob='

MANAGER'

select*fromdept;

select*fromsalgrade;

--列出在部门sales工作的员工的

selectename

fromempa,deptb

whereb.dname='

SALES'

anda.deptno=b.deptno;

--列出所有员工的,部门名称和工资

selectename,dname,salfromempa,deptbwherea.deptno=b.deptno;

--列出所有部门的详细信息和部门人数

select*

fromdept

fulljoin(selectdeptno,count(*)fromempgroupbydeptno)bondept.deptno=

b.deptno;

--列出各个部门职位为manager的最低薪金

selectdeptno,min(sal)最低薪金

wherejobin'

groupbydeptno;

--查询出部门人数至少是1的部门名字

selectdname

fulljoin(selectdeptno,count(*)人数fromempgroupbydeptno)bondept.deptno=

b.deptno

where人数>

=1;

--列出工资比smith多的员工

select*fromempwheresal>

(selectsalfromempwhereename='

--列出所有员工的对应领导的

selecta.*,b.ename领导fromempaleftjoinempbonb.empno=a.mgr;

--求出某个员工的领导,并要求这些领导的薪水高于或等于3000

selecta.ename,a.sal

fromempa,empb

wherea.empno=b.mgr

anda.sal>

=3000;

--列出部门名称,和这些部门的员工信息

selectdname,a.*fromempa,deptbwherea.deptno=b.deptno;

--列出所有职位为clerk的员工及其部门名称,部门的人数

SELECTename,dname,a.*,job

FROMemp,deptb

FULLJOIN(SELECTdeptno,COUNT(*)AS人数FROMempGROUPBYdeptno)aONb.deptno=

a.deptno

WHEREemp.deptno=a.deptno

ANDjob='

--列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级

selecte1.ename,dname,e2.ename领导,e1.sal,s.grade

fromempe1,deptd,empe2,salgrades

wheree1.mgr=e2.empno(+)

ande1.deptno=d.deptno

ande1.sal>

(selectavg(sal)fromemp)

ande1.salbetweens.losalands.hisal;

--列出与scott从事相同工作的所有员工共及部门名称

selectename,dname

fromdeptd,empe

whered.deptno=e.deptno

ande.job=(selectjobfromempwhereename='

SCOTT'

--列出薪金大与部门30中的任意员工的薪金的所有员工的和薪金

selectename,sal

wheresal>

ANY(selectsalfromempwheredeptno=30);

--列出薪金大雨部门30中的全部员工的信息的所有员工的和薪金,部门名称

SELECTe.*,dname

FROMempe,deptd

WHEREsal>

ALL(SELECTsalFROMempWHEREdeptno=30)

ANDd.deptno=e.deptno;

--列出每个部门的员工数量,平均工资

SELECTcount(*)人数,avg(sal),deptnoFROMempGROUPBYdeptno;

--列出每个部门的员工数量,平均工资和平均服务期限(月)

selectdeptno,

count(*)员工数量,

trunc(avg(sal+nvl(comm,0)))平均工资,

to_char(to_date('

0001-01'

'

yyyy-mm'

)+avg(sysdate-hiredate)-366-31,

'

yy"

年"

mm"

月'

)平均服务期限

/*selectsysdatesysdate+(sysdate-hiredate),

fromemp*/

--列出各种工作的最低工资及从事工资最低工资的雇员名称

selecte.ename,a.*

fromempe

rightjoin(selectmin(sal)最低工资,jobfromempgroupbyjob)aone.job=

a.job

wheree.sal=a.最低工资;

--求出部门名称带字符‘S’的部门员工,工资合计,部门人数

selectdname,a.*

fromdeptd

fulljoin(selectsum(sal)工资合计,deptnofromempgroupbydeptno)aond.deptno=

wherednamelike'

%S%'

--求出部门平均工资以及等级

selectd.dname,b.*,s.grade

fromsalgrades,

deptd,

(selectavg(sal)平均工资,deptnofromempgroupbydeptno)b

whered.deptno(+)=b.deptno

andb.平均工资betweens.losalands.hisal;

--不使用函数查询工资最高人的信息

=all(selectsalfromemp);

--求出平均工资最高的部门名称

selectd.dname,b.平均工资

fromdeptd,

whered.deptno=b.deptno

andb.平均工资>

=all

(selectavg(sal)平均工资fromempgroupbydeptno);

--求平均工资的等级最低的部门名称

selectdname,b.grade

fromdept,

(selectgrade,deptno

fromsalgrade,

(selectdeptno,avg(sal)平均工资fromempegroupbydeptno)a

wherea.平均工资betweenlosalandhisal)b

whereb.grade=

(selectmin(grade)

wherea.平均工资betweenlosalandhisal)

andb.deptno=dept.deptno;

--部门经理人中平均工资最低的部门名称

(selectavg(sal),rank()over(orderbyavg(sal))rk,deptno

wherejob='

groupbydeptno)a

wherea.rk=1

anddept.deptno=a.deptno;

selectsysdate,sysdate-hiredate,sysdate+(sysdate-hiredate)

selectdeptno,count(*)员工数量,

trunc(avg(sal+nvl(comm,2)))平均工资,

to_char(to_date('

'

)+avg(sysdate-hiredate)-366-31,'

fromempgroupbydeptno;

ddddd"

天'

pl/sql练习题

--1.自定义输入任意员工编号,输出该员工编号、、工资、部门名称、所在地

declare

empnointeger;

enamevarchar2(10);

sal 

integer;

dnamevarchar2(20);

loc 

varchar2(20);

begin

selectempno,ename,sal,dname,loc

intoempno,ename,sal,dname,loc

fromemp,dept

whereemp.deptno=dept.deptno

andempno=&

i;

dbms_output.put_line('

'

||ename||chr(13)||'

工资:

||sal||chr(13)||'

部门名称:

||dname||chr(13)||'

所在地:

||loc);

exception

whenno_data_foundthen

工号不存在'

end;

--2.自定义输入任意员工编号,如果该员工入职时间大于10年,则奖金加1W,如果该员工入职时间大于五年,奖金加5000,否则奖金不加,最终输出员工编号、、入职时间、原奖金、现奖金

--【--第六天1.2】

empno 

ename 

varchar2(10);

hiredatedate;

comm 

comm1 

years 

int;

number;

i:

=&

selectempno,ename,hiredate,comm

intoempno,ename,hiredate,comm

whereempno=i;

selectmonths_between(sysdate,hiredate)

intoyears

员工编号:

||empno||chr(13)||'

||ename||

chr(13)||'

入职时间'

||hiredate||chr(13)||'

原奖金'

||comm||

chr(13));

ifyears/12>

10then

selectcomm+10000intocomm1fromempwhereempno=i;

elsifyears/12>

5then

selectcomm+5000intocomm1fromempwhereempno=i;

endif;

现奖金'

||comm1);

end;

--3.自定义输入部门编号,查询出该部门编号下所有员工信息(、工资、部门编号),并显示信息条数

emp.ename%type;

emp.sal%type;

deptnoemp.deptno%type;

number:

cursorc1is

selectename,sal,deptnofromempwheredeptno=i;

openc1;

loop

fetchc1

intoename,sal,deptno;

ifc1%foundthen

||ename||chr(13)||'

工资'

||sal||

部门编号:

||deptno||chr(13));

else

查询完毕!

共有'

||c1%rowcount||'

条记录'

exit;

endloop;

closec1;

--4.自定义输入员工编号,若该员工工资低于5000,则加奖金500l;

--若员工工资高于5000,则加奖金100;

--最终输出员工编号、、工资、原奖金、先奖金

empnoemp.empno%type;

enameemp.ename%type;

m%type;

comm1m%type;

selectempno,ename,comm,sal

intoempno,ename,comm,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1