伯山',
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)