Oracle的sql语句练习题含答案_第1页
Oracle的sql语句练习题含答案_第2页
Oracle的sql语句练习题含答案_第3页
Oracle的sql语句练习题含答案_第4页
Oracle的sql语句练习题含答案_第5页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

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

文档简介

1、Oracle的sql语句练习题含答案(二)Oracle_SQL练习题11 .选择部门30中的所有员工.2.列出所有办事员(CLERK)的姓名,编号和部门编号.3.找出佣金高于薪金的员工.4.找出佣金高于薪金的60%的员工.5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金 大于或等于2000的所有员工的详细资料.7.找出收取佣金的员工的不同工作.8.找出不收取佣金或收取的佣金低于100的员工.9.找出各月倒数第3天受雇的所有员工.10.找出早

2、于12年前受雇的员工.11 .以首字母大写的方式显示所有员工的姓名.12.显示正好为5个字符的员工的姓名.13.显示不带有R的员工的姓名.14.显示所有员工姓名的前三个字符.15.显示所有员工的姓名,用a替换所有A16.显示满10年服务年限的员工的姓名和受雇日期.17.显示员工的详细资料,按姓名排序.18.显示员工的姓名和受雇日期 ,根据其服务年限,将最老的员工排在最前面.19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.21.显示在一个月为30天的情况所

3、有员工的日薪金,忽略余数.22.找出在(任何年份的)2月受聘的所有员工。23.对于每个员工,显示其加入公司的天数.24.显示姓名字段的任何位置包含A的所有员工的姓名.25.以年月日的方式显示所有员工的服务年限.答案:1.select ename,job,mgr,hiredate,sal,comm ,deptnofrom emp where deptno=30;2.select ename,empno,deptnofrom emp where job=CLERK;3.select * from emp where commsal;4.select *from empwhere commsal*0

4、.6;5.select empno ,ename, job,hiredate,sal,comm,deptnofrom empwhere( job=MANAGER and deptno=10)or( job=CLERK and deptno=20);6.select empno,ename,job, hiredate,sal, deptnofrom empwhere ( job=MANAGER and deptno=10)or( job=CLERK and deptno=20)or(job MANAGER and jobCLERK) and sal=2000);7.select distinct

5、 ename,job,comm from empwhere NVL(comm,0)0;注意如果像上面这样写,就job ename comm 3个同时不同的都列出来正确的是:select distinct jobfrom empwhere NVL(comm,0)0;8.select ename,comm. from emp where NVL(comm,0)=0 or NVL(comm,0)100;如果按上面的写法就重复了,直接可以写成select ename,commfrom empwhere NVL(comm,0)1211.select initcap(ename) name ,job, h

6、iredatefrom emp;12. select ename,job,hiredate from emp where length(ename)=5;13select ename, job from emp where ename not like %R%;14.select substr(ename, 1,3) name,job,hiredatefrom emp ;15select replace(ename, A,a) name,job,hiredatefrom emp;16select ename, job, hiredatefrom empwhere months_between(

7、sysdate,hiredate)/12=10;17. select * from emp order by ename;18.select ename, hiredate from emp order by hiredate desc;19.select ename,job, sal from emp order by job desc, sal asc;20.select ename, to_char(hiredate,yyyy) year, to_char(hiredate,mm) monthsfrom emporder by months, year asc;21.select ena

8、me, sal/30 dailysalfrom emp;22.select ename, hiredatefrom empwhere to_char(hiredate,mm)=02;23.select ename,sysdate-hiredate天数from emp;24.select ename from emp where instr(ename,A,1)0;25. select ename, to_char(hiredate,yyyy/mm/dd)from emp ;-26.列出至少有一个员工的所有部门select dname from emp,dept where emp.deptno

9、=dept.deptno group by dname;select distinct dname from emp,dept where emp.deptno=dept.deptno;- -说明:(1) select中出现的字段一定要出现在group by中;- -(2)如果select中出现的字段不出现在group by中,则一定要出现在select的聚合函数中,对于想出现的字段,可用max()或min()。- -(3)默认的情况是按group by中的字段来排序,如果要用order by来自己排序,则order by后的字段-一定是group by后的字段,不能是聚合函数的字段-27.列

10、出薪金比“SMITF4多的所有员工.select ename, sal from emp where sal (select sal from emp where upper(ename)=SMITH);-28.列出所有员工的姓名及其直接上级的姓名.select a.ename, b.ename mgrname from emp a,emp b where a.mgr = b.empno;-29.列出受雇日期早于其直接上级的所有员工select e.ename, m.ename from emp e, emp m where e.mgr=m.empno and (e.hiredate 1500

11、;-33.列出在部门“SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号select ename from emp, dept where emp.deptno = dept.deptno and dname = SALES;-34.列出薪金高于公司平均薪金的所有员工select ename, sal from emp where sal (select avg(sal) from emp);-35.列出与“SCOTT从事相同工作的所有员工-SCOTT从事一种工作select ename from emp where job = (select job from emp wher

12、e upper(ename) = SCOTT);-SCOTT从事多种工作select ename, job from emp where job in (select job from emp where upper(ename) = SCOTT);-36.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金select ename, sal from emp where sal in(select sal from emp where deptno = 30);-37.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金select ename, sal from emp where

13、 sal (select max(sal) from emp where deptno = 30);-38.列出在每个部门工作的员工数量、平均工资和平均服务期限select deptno 部号, count(ename)员工数 量,avg(sal + nvl(comm, 0)平 均工资, trunc(avg(sysdate-hiredate)平均服务期限(天)from emp group by deptno;-39.列出所有员工的姓名、部门名称和工资select ename, dname, sal+nvl(comm,0) from emp, dept where emp.deptno = de

14、pt.deptno;-40.列出从事同一种工作但属于不同部门的员工的一种组合select distinct e.deptno, e.job from emp e, emp m where e.deptno != m.deptno and e.job = m.job order by e.job;-41.列出所有部门的详细信息和部门人数select dept.*, (select count(ename) from emp where emp.deptno(+)=dept.deptno)人数from dept;-42,列出各种工作的最低工资select job, min(sal + nvl(co

15、mm, 0)最低工资from emp group by job;-43,列出各个部门的MANAGER(经理)的最低薪金select min(sal + nvl(comm,0) from emp where upper(job) = MANAGER group by deptno;-显示部门名称select dname, min(sal + nvl(comm,0) from emp, dept where emp.deptno = dept.deptno and upper(job) = MANAGER group by dname;-44,列出所有员工的年工资,按年薪从低到高排序select

16、ename, to_char(sal+nvl(comm,0)*12, 9999,9999,00)年工资from emp order by 2;-45,显示各部门员工薪金最高的前2名select * from (select ename, deptno, sal, row_number() over(partition by deptno order by sal desc)r from emp ) where r =2-46.显示薪金最高的3位员工select * from (select ename, sal,dense_rank() over(order by sal desc) r fr

17、om emp) where r (select avg(sal) from emp p where e.deptn o=p,deptno);-52,给所有10部门的经理(MANAGER)和20部门的职员(CLERK),增加薪金10%。update emp set sal=sal*(1+0.1) where (deptno=10 and upper(job)=MANAGER) or(deptno=20 and upper(job尸CLERK);-53,删除DEPT中没有员工的部门。delete from dept where deptno not in(select distinct deptn

18、o from emp);-54,删除雇佣年限低于20年的员工。delete from emp where trunc(sysdate-hiredate) 2850;4,查询工资不在1500到2850之间的所有雇员姓名和工资。select ename, sal from emp where sal not between 1500 and 2850;5,查询10号部门和30号部门工资超过1500的雇员姓名和工资。select ename, sal from emp where sal (select avg(sal) from emp); 19.查询工资、奖金与SCOTT完全相同的所有员工的姓名

19、、工资和奖金。select ename,sal, comm from emp where (sal,nvl(comm,-1) in (select sal,nvl(comm,-1) from emp whereename=SCOTT);20.查询81年入职的员工select * from emp where to_char(hiredate, yy尸81;21.按年月日查询员工信息select to_char(hiredate, yyyy-mm-dd )from emp;22.向DEPT表中插入一条数据,要求:部门号为50,部门名称为ADMINISTRATOR,部门位置为BOSTON。Inse

20、rt into dept values(50, ADMINISTRATOR,BOSTON);23.向EMP表中插入一条数据,要求:员工号为2000,姓名为JOHN ,工资为1000,入职时间为2003年4月7日,部门号为30号。Insert into emp (empno,ename,sal,hiredate,deptno) values(2000, JOHN,1000,07-4月-03,30);24.给10号部门的每个雇员增加10%的工资。然后提交事务。Update emp set sal=sal*1.1 where deptno=10; commit25.删除50号部门。然后回滚事务。Delete from dept where deptno=50;Rollback;新建一张学员信息表(student),要求:1 .字段如下:学号(sid),姓名(name),性另1J (sex),年龄(age),地址(address).2.分别为字段添加约束:学号为主键,姓名为非空,性别为检查约束,年龄为检查约束,地址为默认约束.3.为表建立自增值(sid),建议初始彳直从为1001,增量为1.4.插入记录.新建一张课程表(course),要求:1 .字段如下:课程编号

温馨提示

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

最新文档

评论

0/150

提交评论