资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
word格式1 Oracle基础查询综合示例有职员表 emp,表结构如表1所示:表1 职员表emp 信息emp 表中的示例数据如图1所示:图1有部门表 dept,表结构如表2所示:表2 部门表 dept 信息dept表中的示例数据如图2所示:图2需要完成如下查询:1、 查询职员表中,在20和30号部门工作的员工姓名和部门号。select ename,deptno from emp where deptno in (20,30);2、 查询职员表中,没有管理者的员工姓名及职位,并按职位排序。select ename,job from emp where mgr is null order by job;3、 查询职员表中,有绩效的员工姓名、薪资和绩效,并按工资倒序排列。select ename,sal,comm from emp order by sal desc;4、 查询职员表中,员工姓名的第三个字母是A的员工姓名。select ename from emp where ename like _a%;5、 查询职员表中的职员名字、职位、薪资,并显示为如图3所示效果:select ename|,|job|,|sal out_put from emp;图3提示:列之间用逗号连接,列头显示成OUT_PUT。6、查询职员表中员工号、姓名、工资,以及工资提高百分之20%后的结果。select empno,ename,sal,sal*1.2 from emp;7、 查询员工的姓名和工资,条件限定为:工资必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。select ename,sal from emp where sal1200 order by hiredate asc;8、 查询ACCOUNT部门以外的其他部门的编号、名称以及所在地。select deptno,dname,loc from dept where dname not in accounting;2 Oracle分组查询综合示例对于如前所示的职员表 emp,需要完成如下查询:1、 查询每个部门中每个职位的最高薪水。select max(sal),deptno,job from emp group by deptno,job;2、有SQL语句如下所示:SELECT a.ename, a.sal, a.deptno, b.maxsalFROM emp a,(SELECT deptno, max(sal) maxsalFROM empGROUP BY deptno) bWHERE a.deptno = b.deptnoAND a. sal any(e2.sal) and e1.mgr = e2.empno;4、找出EMP 中那些工资高于他们所在部门普通员工平均工资的员工。select e.ename,e.sal,e.deptno,d.avgsal from emp e,( select deptno ,avg(sal) avgsal from emp group by deptno ) dwhere e.sald.avgsaland e.deptno= d.deptno;3 Oracle分组查询综合示例(提高题,选做)1、下列 SQL语句出错的原因是(B)。 SELECT classid, AVG(MONTHS_BETWEEN(SYSDATE,entertime) FROM student WHERE AVG( MONTHS_BETWEEN (SYSDATE, entertime)12 GROUP BY classid ORDER BY AVG(MONTHS_BETWEEN (SYSDATE, entertime);A) select短语中不能出现组函数。B) where短语中不能限制分组结果。C) order by子句中不能包含组函数。D) 组函数中不能包含单行函数。2、有学员表Student,该表的结构如表3所示:表- 3 学员表 Student 信息编写 SQL 语句,查询每班中每个科目的最高成绩。 select classid,subject,max(score) from student group by classid,subject;3、针对表3所示的 Student 表,执行下述SQL语句:1) SELECT a.name, a.score, a.classid, b.avgscore2) FROM student a,3) (SELECT classid, avg(score) avgscore4) FROM student5) GROUP BY classid) b6) WHERE a.classid = b.classid7) AND a.score b. avgscore;关于运行结果,下列描述正确的是(D)。A) 第一行出现错误B) 第三行出现错误C) 第六行出现错误D) 语句正常执行4 Oracle关联查询综合示例1、有职员表emp,若需列出所有薪水高于平均薪水值的员工信息,则有 SQL语句如下:SELECT ename, job FROM emp WHERE sal avg(sal);上述语句是否正确?如果有错,写出正确的SQL语句。select a.ename,a.job from emp a,(select avg(sal) sal from emp) b where a.salb.sal;2、有学员分数表,如图5所示:图5编写一条SQL 语句,查询出每门课都大于80 分的学生姓名。select name count(*)from student where fenshu 80 group by name having count(*)=3 ;select distinct Sname from S where Sname not in (select distinct Sname from S where grade=80)3、有USERLIST 表如图6所示:图6有 CHAEGE 表如图7所示:图7请用最少的SQL 语句,产生如表4所示的查询结果:表4 查询结果其中,数据是经过USERLIST、CHAEGE 表进行合适的连接,并以 ACCOUNT 字段为关键字分组求和得到。特别注意:电话号码421004 在USERLIST 表中有一条记录,在CHARGE 表中并没有记录。但是,在查询结果中,合同CCCC 具有一条记录。4、有两个表emp和taxgrade,其字段分别为:emp(员工)表: empname,empno,saltaxgrade(税别)表: taxmin,taxmax,grade上述字段中,除字段empname外,其他字段均为数值类型。emp 表的数据如表5所示:表5 emp表示例数据taxgrade 表的数据如表6所示:表6 taxgrade表示例数据编写SQL语句,查询编号为1的员工的税别。select grade from taxgrade where taxmax(select sal from emp where empno = 1; );5、有学员表 student,用于记录:学号,姓名,性别,年龄,组织部门;有课程表course,用于记录:课程编号,课程名称;还有选课表 sc,用于记录:学号,课程编号,成绩。三表的结构以及关联如图8所示:图8完成如下要求的 SQL 语句:1) 写一个SQL语句,查询选修了计算机原理的学生学号和姓名select Sno,Sname from student where Sno in (select Sno from SC where cno = (select cno from Course where cname = 计算机原理 ) );2) 写一个SQL语句,查询周星驰同学选修了的课程名字select cname from Course where cno in ( select cno from Sc where Sno = ( select Sno from Student where Sname = 周星驰 ) );6、有表 test ,表结构如表7所示:表7 test表编写 SQL 语句,查询所有年龄比所属主管年龄大的人的ID和 NAME。select a.ID ,a.NAME from test a join test b on a.MANAGER = b.ID where a.AGE b.AGE;7、有表 city 记载城市信息,如表8所示:表8 city表有表 state,记载省份信息,如表9所示:表9 state表欲得到如表10所示的查询结果:表10 查询结果请编写相应的SQL语句。select CityNo,CityName,StateNo,StateName from city c full join state s where c.StateNo = s.StateNo;5 Oracle关联查询综合示例(提高题,选做)有科目表,记载学员的学习科目数据,如表11所示:表11 t_subject表(科目表
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号