CUUG官方博客: CUUG官网_CUUG怎么样_CUUG培训就业怎么样_CUUG学Oracle要多少钱

【SQL1-4章课后作业】 兰州交大 徐辉

 

【作业一】
1.描述 scott.emp 表的结构,查询 emp 表中所有数据。
 解:select * from emp;
     desc emp;
2.找出下面语句中的错误并修正。
  select empno ename,job sal x 12 New Salary from emp;
 解:select empno,ename,job,sal*12 "New Salary" from emp;
3.查询 scott.emp 表中,所有员工的姓名、工资、工资与奖金之和,列头显示为
  如下格式: NAME SALARY Total_Salary。
 解:select ename NAME,sal as SALARY,sal+nvl(comm,0)  'Total_Salary' from emp;
4.查看最后一次执行的查询语句,将此语句保存在操作系统中:
  /home/oracle/les01_01.sql,在 sqlplus 中查看并执行这个脚本。
 解:list;
     save /home/oracle/les01_01.sql;
     get /home/oracle/les01_01.sql;
     @ /home/oracle/les01_01.sql;
【作业二】
1.查询员工的姓名和工资,要求工资大于$2850.
 解:select ename,sal from emp where sal>2850;
2.查询员工的姓名和工资,要求工资在$1500 和$2850 之间.
 解:select ename,sal from emp where sal between 1500 and 2850;
3.查询员工的姓名和工资,要求工资不在$1500 和$2850 之间,按工资升序排序.
 解:select ename,sal from emp where sal not between 1500 and 2850 order by sal;
4.查询出部门号为 10 和 30 的所有员工的姓名、工作、入职时间, 按照入职时
间的降序排序。
 解:select ename,job,hiredate from emp where deptno in (10,30) order by hiredate asc;
5. 查询出姓名中第二个字母为: 'A'的所有员工姓名。
 解:select ename from emp where ename like '_A%';
6. 查询员工的姓名、工作、工资,要求工作是 Clerk 或 Analyst,并且工资不等
  于$1000、 $3000、 $5000。
 解:select ename,job,sal from emp where job in('CLERK','ANALYST') and sal not in (1000,3000,5000);
【作业三】
1.写一个查询,选择出当前的日期。
 解:select sysdate from dual;
2.查询出雇员表( emp)表中的员工编号、 姓名、 工资、 新的薪水(是原先薪水
  的 1.25 倍),并将该列标记为 New Salary。将该脚本保存到 les03_02.sql 中。
 解:select empno,ename,sal, sal*1.25 "New Salary" from emp;
     save les03_02.sql;
3.运行文件 les03_02.sql 中的查询。
 解:@les03_02.sql;
4.查询出雇员表中所有员工的姓名、入职时间、 和工资调整日期(工作 6 个月之
  后的第一个星期一)。其格式如下:“ 1981-09-23”。
 解:select ename,hiredate,to_char(next_day(add_months(hiredate,6)',MONDAY'),'yyyy-mm-dd') from emp;
5.查出每个员工的名字( ename)、雇佣日期到现在的日期间隔的月数(要求四
  舍五入为整数),该列命名为 MONTHS_WORKED,并以该列的降序排序。
 解:select ename,round(months_between(sysdate,hiredate),0) MONTHS_WORKED from emp;
6.查询员工的姓名,以及姓名的长度。要求其姓名首字母大写。
 解:select initcap(ename),length(ename) from emp;
【作业四】
1.查询员工的姓名,部门号,部门名称。
 解:select e.ename,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno;
2.查询 30 号部门的所有工作的列表,以及部门号。
 解:select distinct(e.job),d.deptno from emp e,dept d where e.deptno=d.deptno; 
3.查询出奖金( comm) 非空的员工姓名、部门名称以及部门所处的位置。
 解:select e.ename,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno and comm is not null;
4.查询姓名中包含"A"字母的所有员工姓名及其所在部门的名称。
 解:select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno and ename like '%A%';
5.查询工作在 DALLAS 的所有员工的姓名、工作、部门号、部门名称。
 解:select e.ename,e.job,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno and d.loc='DALLAS';
6.查出每个雇员的编号、姓名、其经理的编号和姓名。各个列分别命名为:
  ID,NAME,MGR_ID,MGR_NAME.
 解:select e.ename NAME,e.empno ID,m.ename MGR_NAME,m.empno MGR_ID from emp e,emp m where e.mgr=m.empno;
7.修改第 6 题的查询,使得没有经理的员工的信息也可以显示出来。
 解:select e.ename NAME,e.empno ID,m.ename MGR_NAME,m.empno MGR_ID from emp e,emp m where e.mgr=m.empno(+);

 

 

 

 

 

 

 

 


 


作者:逗你玩儿 分类:学员作业 浏览:536 评论:0
留言列表
发表评论
来宾的头像

点击关闭
  • 在线客服