oracle练习题 下载本文

内容发布更新时间 : 2024/11/20 21:24:59星期一 下面是文章的全部内容请认真阅读。

oracle练习题

查询练习一

--查询姓名首字母为“A”或第二个字符为“A”的所有员工信息 SELECT* FROMemp

WHEREenameLIKE'A%' ORenameLIKE'_A%';

--查询部门20和30中的、岗位不是“CLERK”或“SALESMAN”的所有员工信息 SELECT* FROMemp

WHEREjob !='CLERK' ANDjob !='SALESMAN' ANDdeptnoIN(20,30);

--查询出工资在2500-3500之间,1981年入职的,没有奖金的所有员工信息 SELECT* FROMemp

WHEREEXTRACT(YEARFROMhiredate) =1981 ANDsalBETWEEN2500AND3000 ANDcommISNULL; --查询比平均员工工资高的员工信息 SELECTdeptno, dname, loc FROMdept WHEREdeptnoIN( SELECTdeptno FROMemp GROUPBYdeptno HAVINGAVG(sal) >2000 );

--查询平均工资高于2000的部门信息 selectdeptno ,dname,loc fromdept

wheredeptnoin(selectdeptno fromemp groupbydeptno havingavg(sal)>2000); --查询出ward的工作所在地 SELECTloc FROMdept WHEREdeptnoIN( SELECTdeptno

FROMemp

WHEREename ='WARD' );

--查询出工资比ADAMS高的所有人姓名、部门、所在地 SELECTa.ename, b.dname, a.sal FROMemp a, dept b WHEREa.deptno = b.deptno ANDa.sal> ( SELECTsal FROMemp

WHEREename ='ADAMS' );

--查询出工资排名第7的员工信息 SELECT* FROM(

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

WHERErk =7;

/*minue:两个结果值相减, uniou:两个结果集拼到一起 (1~7)-(1~6)=排名第7 */

--查询与部门20岗位不同的员工工资 SELECTsal, job,deptno FROMemp WHEREjobNOTIN( SELECTjob FROMemp

WHEREdeptno =20 );

--验证 --20部门的岗位 /*select job from emp

where deptno=20;*/

--查询与smith部门岗位完全相同的员工姓名、工作、工资 SELECT* FROMemp WHEREdeptnoIN(

SELECTdeptno FROMemp

WHEREename ='SMITH' ) ANDjobIN(

SELECTjob FROMemp

WHEREename ='SMITH' );

--查询emp表中的所有信息 select* fromemp;

--查询emp表中的员工姓名和工资 selectename,sal fromemp;

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

wheredeptno=20andsal>3000;

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

wheredeptno=20orsal>3000;

--使用between and查询工资在2000到4000之间的员工 select* fromemp

wheresalbetween2000and4000; --使用in查询部门编号10,20的所有员工 select* fromemp

wheredeptnoin(10,20);

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

whereenamelike'%W%';

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

whereenamelike'_W%';

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

orderbydeptno,sal ; --显示员工共工资上浮20%的结果 selectsal+sal*0.2 fromemp;