oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择(7)

2020-04-14 05:19

伯山',

2 '电子工业出版社',TO_DATE('2002-01-01','YYYY-MM-DD'),21);

SQL> INSERT INTO BOOK VALUES('100006','Oracle8实用教程','翁正科等', 2 '电子工业出版社',TO_DATE('2003-07-08','YYYY-MM-DD'),38); SQL> INSERT INTO READER VALUES('200001','张三'); SQL> INSERT INTO READER VALUES('200002','李凤'); SQL> INSERT INTO READER VALUES('200003','孟欣'); SQL> INSERT INTO READER VALUES('200004','谢非'); SQL> INSERT INTO READER VALUES('200005','刘英'); SQL> INSERT INTO BORROW VALUES('100001','200001',

2 TO_DATE('2004-08-10 10:06:14','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100002','200002',

2 TO_DATE('2004-08-10 10:06:27','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100003','200003',

2 TO_DATE('2004-08-10 10:06:36','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100004','200004',

2 TO_DATE('2004-08-10 10:06:48','YYYY-MM-DD HH:MI:SS')); SQL> INSERT INTO BORROW VALUES('100005','200005',

2 TO_DATE('2004-08-10 10:06:58','YYYY-MM-DD HH:MI:SS'));

SQL> SELECT NO,TITLE,AUTHOR FROM BOOK WHERE PUBLISH='电子工业出版社'; NO TITLE AUTHOR

-------- -------------------------------------------------- -------------------- 100003 Oracle9i开发指南:PL/SQL程序设计 Joan Casteel 100004 数据库原理辅助与提高 盛定宇 100005 Oracle9i中文版实用培训教程 赵伯山 100006 Oracle8实用教程 翁正科等

SQL> UPDATE BOOK SET PRICE=29 WHERE NO='10007';

SQL> INSERT INTO BOOK VALUES('100007','Java网络编成','李程等', 2 '电子工业出版社',TO_DATE('2000-08-01','YYYY-MM-DD'),35); SQL> UPDATE BOOK SET PRICE=29 WHERE NO='100007'; SQL> DELETE FROM BOOK WHERE NO='100007'; SQL> conn system/aaa as sysdba 已连接。

SQL> alter user scott identified by tiger account unlock; SQL> conn scott/tiger; SQL> select * from emp; ]]

INSERT INTO BOOK VALUES('100001','冶金工业出版社','李代平', '冶金工业出版社',TO_DATE('2003-01-01','YYYY-MM-DD'),38);

INSERT INTO BOOK VALUES('100002','Oracle9i中文版入门与提高','赵松涛',

'人民邮电出版社',TO_DATE('2002-07-01','YYYY-MM-DD'),35);

INSERT INTO BOOK VALUES('100003','Oracle9i开发指南:PL/SQL程序设计', 'Joan Casteel','电子工业出版社',TO_DATE('2004-04-03','YYYY-MM-DD'),49); INSERT INTO BOOK VALUES('100004','数据库原理辅助与提高','盛定宇', '电子工业出版社',TO_DATE('2004-03-01','YYYY-MM-DD'),34);

INSERT INTO BOOK VALUES('100005','Oracle9i中文版实用培训教程','赵伯山', '电子工业出版社',TO_DATE('2002-01-01','YYYY-MM-DD'),21);

INSERT INTO BOOK VALUES('100006','Oracle8实用教程','翁正科等', '电子工业出版社',TO_DATE('2003-07-08','YYYY-MM-DD'),38);

INSERT INTO READER VALUES('200001','张三'); INSERT INTO READER VALUES('200002','李凤'); INSERT INTO READER VALUES('200003','孟欣'); INSERT INTO READER VALUES('200004','谢非'); INSERT INTO READER VALUES('200005','刘英');

INSERT INTO BORROW VALUES('100001','200001',

TO_DATE('2004-08-10 10:06:14','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100002','200002',

TO_DATE('2004-08-10 10:06:27','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100003','200003',

TO_DATE('2004-08-10 10:06:36','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100004','200004',

TO_DATE('2004-08-10 10:06:48','YYYY-MM-DD HH:MI:SS')); INSERT INTO BORROW VALUES('100005','200005',

TO_DATE('2004-08-10 10:06:58','YYYY-MM-DD HH:MI:SS')); (2)

①SELECT NO,TITLE FROM BOOK;

②SELECT NO,TITLE,AUTHOR FROM BOOK WHERE PUBLISH='电子工业出版社'

③SELECT * FROM BOOK WHERE PRICE>40;

④SELECT PUBLISH,COUNT(*) FROM BOOK GROUP BY PUBLISH; ⑤SELECT * FROM BOOK WHERE AUTHOR LIKE '赵%'

⑥SELECT RNAME,TITLE,BORROW_DATE FROM BOOK,READER,BORROW WHERE BOOK.NO=BORROW.NO AND READER.RNO=BORROW.RNO; ⑦INSERT INTO BOOK VALUES('10000007','Java网络编成','李程等', '电子工业出版社',TO_DATE('2000-08-01','YYYY-MM-DD'),35); ⑧UPDATE BOOK SET PRICE=29 WHERE NO='100007'; ⑨DELETE FROM BOOK WHERE NO='10000007'

⑩SELECT BOOK.NO,TITLE,RNAME FROM BOOK,READER,BORROW WHERE BOOK.NO=BORROW.NO AND READER.RNO=BORROW.RNO; 2.

根据Oracle数据库scott模式下的emp表和dept表,完成下列操作。 1查询20号部门的所有员工信息。

Select * from emp where deptno=20;

2查询所有工种为CLERK的员工的员工号、员工名和部门号。 Select empno,ename,deptno from emp where job=’CLERK’; 3查询奖金(COMM)高于公子(SAL)的员工信息。 Select * from emp where comm>sal;

4查询奖金高于工资的20%的员工信息。 Select * from emp where comm.>sal*0.2;

5查询10号部门中工种为Manager和20号部门中工种为CLERK的员工信息。 Select * from emp where (job=’Manager’and deptno=10) or (job=’CLERK’and deptno=20)

6查询所有工种不是Manager和CLERK,且工资大于或等于2000的员工的详细信息。

Select * from emp where (job!= 'MANAGER' or job= 'CLERK') and sal>=2000 7查询有奖金的员工的不同工种。

Select job from emp where comm.>0 group by job 8查询所有员工工资与奖金的和。 Select ename,sal+nvl(comm,0) from emp

9查询没有奖金或奖金低于100的员工信息。

Select * from emp where (comm is null) or comm< 100 10查询各月倒数第二天入职的员工信息。

select ename,hiredate from emp where last_day(hiredate)-hiredate=1 11查询工龄大于或等于10年的员工信息。

select * from emp where months_between(sysdate,hiredate)/25/12>=1 12查询员工信息,要求以首字母大写的方式显示所有员工的姓名。 select initcap(ename) from emp

13查询员工名正好为6个字符的员工的信息。 select ename from emp where length(ename)=6 14查询员工名字中不包含字母“S”的员工。 Select * from emp where ename not like '%S%'

15查询员工姓名的第二个字母为“M”的员工信息。 Select * from emp where ename like '_M%' 16查询所有员工姓名的前三个字符 Select substr(ename,1,3) from emp;

17查询所有员工的姓名,如果包含字母s,则用“S”代替。 Select replace(ename,'s','S') from emp

18查询员工的姓名个和入职日期,并按入职日期从先到后进行排序。 Select ename,hiredate from emp order by hiredate

19显示所有员工的姓名、工种、工资和奖金,按工种降序排序,若工种相同则按工资升序排序。

Select ename,job,sal,comm from emp order by job desc,sal

20显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若月份相同则按入职的年份排序。

select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'mm') month from emp 21查询在2月份入职的员工信息

Select * from emp where to_char(hiredate,'mm')=2

查询所有员工入职以来的工作年限,用**年**月**日的形式表示。 Select ename, (trunc((sysdate-hiredate)/365)|| '年'||trunc(mod((sysdate-hiredate),365)/30)||'月' ||Trunc(mod(mod((sysdate-hiredate),365),30))||'日') days from emp; 22查询至少有一个员工的部门信息。

Select * from dept where deptno in(select deptno from emp) 23查询工资比SMITH员工工资高的所有员工信息。

Select * from dept where deptno in(select deptno from emp where ename='SMITH') 24查询所有员工的姓名及其直接上级的姓名。

Select a.ename,b.ename from emp a, emp b where a.mgr=b.empno 25查询入职日期早于其直接领导的所有员工的信息。

select a.*,b.* from emp a,emp b where a.mgr=b.empno and a.hiredate

27查询所有员工及其部门信息,包括那些还不属于任何部门的员工。 Select a.*,b.* from emp a,dept b where a.deptno=b.deptno(+) select ename,empno,sal,dept.deptno,dname,loc

from emp right join dept on emp.deptno=dept.deptno

28查询所有工种为CLERK的员工的姓名及其部门名称。

Select ename,dname from emp,dept where job='CLERK' and emp.deptno=dept.deptno 29查询最低工资大于2500的各种工作。

select job,min(sal) from emp group by job having min(sal)>2500 30查询平均工资低于2000的部门及其员工信息。 select a.*,b.* from emp a,dept b where a.deptno in(

select deptno from emp having avg(sal)<2000 group by deptno) and a.deptno=b.deptno

31查询在SALES部门工作的员工的姓名信息。

select ename from emp where deptno=(select deptno from dept where dname='SALES') 32查询工资高于公司平均工资的所有员工信息。 select * from emp where sal >(select avg(sal)from emp)

33查询与SMITH员工从事相同工作的所有员工信息。

select * from emp where job=(select job from emp where ename='SMITH') 34列出工资等于30号部门中某个员工工资的所有员工的姓名和工资。 select ename,sal from emp where sal in(select sal from emp where deptno=30) 35查询工资高于30号部门中工作的所有员工的工资的员工姓名和工资。

select ename,sal from emp where sal >all(select sal from emp where deptno=30) 36查询每个部门中的员工数量、平均工资和平均工作年限。 select count(*),avg(sal),avg(sysdate-hiredate) from emp group by deptno 查询从事同一种工作但不属于同一部门的员工信息。 select

worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker left join emp manager on worker.mgr=manager.empno 37查询各个部门的详细信息以及部门人数、部门平均工资。

select a.*,b.* from dept a,(select deptno,count(*),avg(sal) from emp group by deptno) b where a.deptno=b.deptno 查询各种工作的最低工资。

select job,min(sal) from emp group by job 38查询各个部门中不同工种的最高工资。

select deptno,job,max(sal) from emp group by deptno,job 39查询10号部门员工及其领导的信息。

方法一:select a.*,b.* from emp a,emp b where a.mgr=b.empno and a.deptno=10 Select

worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker,emp manager where worker.mgr=manager.empno and worker.deptno=10

查询各个部门的人数及其平均工资。

select count(*) ,avg(sal) from emp group by deptno 40查询工资为某个部门平均工资的员工信息。

select * from emp where sal = any(select avg(sal) from emp group by deptno) 41查询工资高于本部门平均工资的员工的信息。

select * from emp e where e.sal > (select avg(sal) from emp where deptno=e.deptno) 42查询工资高于本部门平均工资的员工的信息及其部门的平均工资。 select e.* ,(select avg(sal) from emp where deptno=e.deptno) from emp e where sal>(select avg(sal) from emp where deptno=e.deptno)

select e.ename,e.empno,e.sal,e.deptno,s.avgsal from emp e,(select deptno ,avg(sal) avgsal from emp group by deptno) s where e.sal>s.avgsal and e.deptno=s.deptno 43查询工资高于20号部门某个员工工资的员工信息。

select * from emp sal>any(select sal from emp where deptno=20) 44统计各个工种的员工人数与平均工资。

select job,count(*),avg(sal) from emp group by job 45统计每个部门中各工种的人数与平均工资。

select deptno,job,count(*), avg(sal) from emp group by deptno,job

46查询工资、奖金与10号部门某员工工资、奖金都相同的员工信息。

select * from emp where (sal, nvl(comm.,0)) in (select sal,nvl(comm,0) from emp where deptno=10)


oracle 10g 数据库基础教程 孙风栋主编 课后习题答案 Oracle选择(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:动力分厂2014危险源清单[1]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: