Oracle经典作业与答案(共12页)_第1页
Oracle经典作业与答案(共12页)_第2页
Oracle经典作业与答案(共12页)_第3页
Oracle经典作业与答案(共12页)_第4页
Oracle经典作业与答案(共12页)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上-day1-1. 查询职员表中工资大于1600的员工姓名和工资Select ename, sal from emp where sal > 1600;2. 查询职员表中员工号为7369的员工的姓名和部门号码Select ename, deptno from emp where empno = 7369;3. 选择职员表中工资不在4000到5000的员工的姓名和工资Select ename, sal from emp where sal not between 4000 and 5000;4. 选择职员表中在20和30号部门工作的员工姓名和部门号Select en

2、ame, deptno from emp where deptno in (20, 30);5. 选择职员表中没有管理者的员工姓名及职位, 按职位排序Select ename, job from emp where mgr is null order by job;6. 选择职员表中有奖金的员工姓名,工资和奖金,按工资倒序排列Select ename, sal, comm. From emp where comm is not null order by sal desc;7. 选择职员表中员工姓名的第三个字母是A的员工姓名Select ename from emp where ename l

3、ike _A%;8. 列出部门表中的部门名字和所在城市;select dname, loc from dept;9. 显示出职员表中的不重复的岗位jobselect distinct job from emp;10. 连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT(提示:使用连接符|、别名)select ename | ', ' | job | ', ' | OUT_PUT(将列名大写) sal from emp;11. 查询职员表emp中员工号、姓名、工资,以及工资提高百分之20%后的结果select empno, ename,

4、 sal, sal * 1.2 salary from emp;12. 查询员工的姓名和工资数,条件限定为工资数必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。select ename, sal from emp where sal > 1200 order by hiredate;13. 列出除了ACCOUNT部门还有哪些部门。select deptno, dname, loc from dept where dname <> 'ACCOUNT'-day2-1. 将员工的姓名按首字母排序,并列出姓名的长度(length)se

5、lect ename, length(ename) from emp order by ename;2. 做查询显示下面形式的结果<enamename> earns <sal> monthly but wants <sal*3>例如:Dream SalaryKing earns $5000 monthly but wants $15000select ename | ' earns $' | sal |' monthly but wants $' | sal * 3 “Dream Salary” from emp;3. 使用d

6、ecode函数,按照下面的条件:JOB GRADEPRESIDENT AMANAGER BANALYST CSALESMAN DCLERK E产生类似下面形式的结果ENAMEJOB GRADESMITHCLERKESELECT ename, job, DECODE(job,'PRESIDENT','A','MANAGER','B','ANALYST','C','SALESMAN','D','CLERK','E') AS "Gr

7、ade"FROM EMP;4. 查询各员工的姓名ename,并显示出各员工在公司工作的月份数(即:与当前日期比较,该员工已经工作了几个月, 用整数表示)。select ename, round(months_between(sysdate, hiredate) hire_months from emp;5. 现有数据表Customer,其结构如下所示: cust_id NUMBER(4) Primary Key, -客户编码 cname VARCHAR2(25) Not Null, -客户姓名 birthday DATE, -客户生日account NUMBER. -客户账户余额(1

8、).构造SQL语句,列出Customer数据表中每个客户的信息。如果客户生日未提供,则该列值显示“not available” 。如果没有余额信息,则显示“no account”。(2).构造SQL语句,列出生日在1987年的客户的全部信息。(3).构造SQL语句,列出客户帐户的余额总数。1)select cust_id, cname, nvl(to_char(birthday, 'yyyy-mm-dd'), 'not available'), nvl(to_char(account, '9999'), 'no account')

9、 from Customer;2)select * from Customer where extract(year from birthday) = '1987'3) select sum(account) from Customer;6. 按照”2009-4-11 20:35:10 ”格式显示系统时间。select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') now from dual;7. 构造SQL语句查询员工表emp中员工编码empno,姓名ename,以及月收入(薪水 + 奖金),注意有的员工暂时没有奖金。se

10、lect empno, ename, sal + nvl(comm, 0) month_salary from emp;8. 查找员工姓名的长度是5个字符的员工信息。select * from emp where length(ename) = 5;9. 查询员工的姓名和工资,按下面的形式显示:(提示:使用lpad函数)NAME SALARY-SMITH $24000select ename name, lpad(sal, 15, '$') salary from emp;10. 查询薪水大于2000元的员工的姓名和薪水,薪水值显示为RMB5000.00这种形式,并对查询结果按

11、薪水的降序方式进行排列;select ename, to_char(sal, 'L9999.00') salary from empwhere sal > 2000order by sal desc;11. 构造查询语句,产生类似于下面形式的结果:NAME HIREDATE REVIEW-SMITH 1980-12-17 1980年12月17日select ename name, to_char(hiredate, 'yyyy-mm-dd') hiredate,to_char(hiredate, 'yyyy"年"mm"

12、月"dd"日"') reviewfrom emp;12. 显示所有员工的姓名ename,部门号deptno和部门名称dname。Select e.ename, d.deptno, d.dnameFrom emp e join dept d on e.deptno = d.deptno;13. 选择在DALLAS工作的员工的员工姓名、职位、部门编码、部门名字 Select e.ename, d.deptno, d.dnameFrom emp e join dept d on e.deptno = d.deptno and d.loc = DALLAS;14.

13、 选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr的姓名ename和员工号deptno,结果类似于下面的格式employeesEmp#managerMgr#SMITH7369FORD7902select wor.ename "employees", wor.empno "Emp#", mag.ename "manager", mag.empno "Mgr#"from emp wor, emp magwhere wor.mgr = mag.empno;15. 查询各部门员工姓名和他们所在位置,结

14、果类似于下面的格式DeptnoEnameLoc20SMITHDALLASselect deptno,e.ename, d.locfrom emp e join dept dusing (deptno);16. 查询公司员工工资的最大值,最小值,平均值,总和select max(sal), min(sal), avg(sal), sum(sal) from emp;17. 列出每个员工的名字,工资、涨薪后工资(涨幅为8%),元为单位进行四舍五入Select ename , sal , round(sal*1.08) from emp;18. 查询出JONES的领导是谁(JONES向谁报告)。se

15、lect e1.ename from emp e1 , emp e2 where e2.mgr = e1.empno and e2.ename = 'JONES'19. JONES领导谁。(谁向JONES报告)。select e1.ename from emp e1 , emp e2 where e1.mgr = e2.empno and e2.ename = 'JONES'-day3-1. 查询各职位的员工工资的最大值,最小值,平均值,总和select job, max(sal), min(sal), avg(sal), sum(sal) from emp g

16、roup by job;2. 选择具有各个job的员工人数(提示:对job进行分组)select job, count(*) from emp group by job;3. 查询员工最高工资和最低工资的差距,列名为DIFFERENCE;select max(sal)-min(sal) "DIFFERENCE" from emp;4. 查询各个管理者属下员工的最低工资,其中最低工资不能低于800,没有管理者的员工不计算在内select mgr, min(sal)from empwhere mgr is not nullgroup by mgrhaving min(sal)

17、>= 800;5. 查询所有部门的部门名字dname,所在位置loc,员工数量和工资平均值;select dept.dname, dept.loc, COUNT, AVGfrom deptjoin( select deptno, count(*) as "COUNT", avg(sal) as "AVG"from empgroup by deptno )using(deptno);6. 查询和scott相同部门的员工姓名ename和雇用日期hiredateselect ename, hiredatefrom empwhere deptno = (s

18、elect deptno from emp where emp.ename = 'SCOTT');7. 查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工资sal。select empno, ename, salfrom empwhere sal > (select avg(sal) from emp);8. 查询和姓名中包含字母u的员工在相同部门的员工的员工号empno和姓名enameselect empno, enamefrom empwhere deptno in (select deptno from emp where ename like

19、 '%U%');9. 查询在部门的loc为newYork的部门工作的员工的员工姓名ename,部门名称dname和岗位名称jobselect e.ename, d.dname, e.jobfrom emp e join dept dusing (deptno) where deptno = (select deptno from dept where loc = 'NEW YORK');10. 查询管理者是king的员工姓名ename和工资salselect ename, salfrom empwhere mgr = (select empno from emp

20、 where ename = 'KING');11. 显示Operations部门有哪些职位select distinct e.job from emp e , dept d where e.deptno = d.deptno and d.dname = 'Operations'12. 各个部门中工资大于1500的员工人数select dept_id , count(*) cnt from s_emp where salary > 1500 group by dept_id;13. 哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序)sel

21、ect first_name , salary from s_emp where salary > (select avg(salary) from s_emp) order by salary desc;14. 所在部门平均工资高于1500的员工名字select first_name , salary from s_emp where dept_id in (select dept_id from s_emp group by dpet_id having avg(salary) > 1500);15. 列出各个部门中工资最高的员工的信息:名字、部门号、工资select firs

22、t_name , salary , dept_id from s_emp where (dept_id , salary) in (select dept_id , max(salary) from s_emp group by dept_id);16. 哪个部门的平均工资是最高的,列出部门号、平均工资select dept_id,avg(salary) from s_emp group by dept_id having avg(salary) = (select max(avg(salary) from s_emp); -day4-1. 创建表employee,字段为:Id numberF

23、irst_Name varchar2(20),last_Name varchar2(20),mgrid NUMBER,Job varchar2(20),Salary number(7,2)CREATE TABLE employee(id NUMBER, first_name VARCHAR2(20),last_name VARCHAR2(20),mgrid NUMBER,salary NUMBER(7,2);2. 向表中插入下列数据,并提交,查询数据;IDFIRST_NAMELAST_NAMEMGRIDSALARY1RoseTyler415002MathaJones422003DonnaNob

24、le413004DoctorWho35005JackHarkness13000SQL> INSERT INTO employee VALUES (1, 'Rose', 'Tyler', 4, 1500);SQL> INSERT INTO employee VALUES (2, 'Martha', 'Jones', 4, 2200);SQL> INSERT INTO employee VALUES (3, 'Donna', 'Noble', 4, 1300);SQL> INSE

25、RT INTO employee VALUES (4, 'Doctor', 'Who', NULL,3500);SQL> INSERT INTO employee VALUES (5, 'Jack', 'Harkness', 1, 3000);SQL> COMMIT;4将3号员工的last_name修改为“Tate”,并提交,查询数据;SQL> UPDATE employee SET last_name = 'Tate' WHERE id = 3;5将所有工资少于2000的员工的工资修改为2000

26、 (不提交),并设置保存点,查询数据;SQL> UPDATE employee SET salary = 2000 WHERE salary < 2000;SQL> SAVEPOINT A;6删除employee表中所有数据(不提交),查询数据;SQL> DELETE FROM employee;SQL> SELECT * FROM employee;7回滚到第五题中的设置的保存点,查询数据;SQL> Rollback to A;SQL> SELECT * FROM employee;8删除表employee中所有数据,并提交,查询数据;SQL>

27、 DELETE FROM employee;SQL> COMMIT;SQL> SELECT * FROM employee;9. 现有数据表Customer,其结构如下所示: cust_id NUMBER(4) Primary Key, -客户编码 cname VARCHAR2(25) Not Null, -客户姓名 csex CHAR(6) -客户性别 birthday DATE, -客户生日account NUMBER. -客户账户余额1)、创建表,客户编码为主键,姓名不能为空,性别只能选择”男”或”女”;CREATE TABLE customer(cust_id NUMBER PRIMARY KEY,cname VARCHAR2(25) NOT NULL,csex CHA

温馨提示

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

评论

0/150

提交评论