Oracle_SQL_练习题及答案(32页).doc
《Oracle_SQL_练习题及答案(32页).doc》由会员分享,可在线阅读,更多相关《Oracle_SQL_练习题及答案(32页).doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-本文由NiCoBee贡献 Oracle SQL 练习题注:这些查询题目涵盖了各种查询的技术,请大家认真做,做好了的查询语句之后,有兴趣的同学可以再创建相应的视图和存储过程create table wkj_student(sno varchar2(10) primary key,sname varchar2(20),sage number(2),ssex varchar2(5);create table wkj_teacher(tno varchar2(10) primary key,tname varchar2(20);create table wkj_course(cno varchar2
2、(10),cname varchar2(20),tno varchar2(20),constraint pk_course primary key (cno,tno);create table wkj_sc(sno varchar2(10),cno varchar2(10),score number(4,2),constraint pk_sc primary key (sno,cno);/*初始化学生表的数据*/insert into student values (s001,张三,23,男);insert into student values (s002,李四,23,男);insert i
3、nto student values (s003,吴鹏,25,男);insert into student values (s004,琴沁,20,女);insert into student values (s005,王丽,20,女);insert into student values (s006,李波,21,男);insert into student values (s007,刘玉,21,男);insert into student values (s008,萧蓉,21,女);insert into student values (s009,陈萧晓,23,女);insert into s
4、tudent values (s010,陈美,22,女);commit;/*初始化教师表*/insert into teacher values (t001, 刘阳);insert into teacher values (t002, 谌燕);insert into teacher values (t003, 胡明星);commit;/*初始化课程表*/insert into course values (c001,J2SE,t002);insert into course values (c002,Java Web,t002);insert into course values (c003,
5、SSH,t001);insert into course values (c004,Oracle,t001);insert into course values (c005,SQL SERVER 2005,t003);insert into course values (c006,C#,t003);insert into course values (c007,JavaScript,t002);insert into course values (c008,DIV+CSS,t001);insert into course values (c009,PHP,t003);insert into c
6、ourse values (c010,EJB3.0,t002);commit;/*初始化成绩表*/insert into sc values (s001,c001,78.9);insert into sc values (s002,c001,80.9);insert into sc values (s003,c001,81.9);insert into sc values (s004,c001,60.9);insert into sc values (s001,c002,82.9);insert into sc values (s002,c002,72.9);insert into sc va
7、lues (s003,c002,81.9);insert into sc values (s001,c003,59);insert into sc values (s002,c003,58);commit;练习:注意:以下练习中的数据是根据初始化到数据库中的数据来写的SQL 语句,请大家务必注意。1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;2、查询平均成绩大于60 分的同学的学号和平均成绩;3、查询所有同学的学号、姓名、选课数、总成绩;4、查询姓“刘”的老师的个数;5、查询没学过“谌燕”老师课的同学的学号、姓名;6、查询学过“c001”并且也学过编号“c002”课程的同学
8、的学号、姓名;7、查询学过“谌燕”老师所教的所有课的同学的学号、姓名;8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;9、查询所有课程成绩小于60 分的同学的学号、姓名;10、查询没有学全所有课的同学的学号、姓名;11、查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名;12、查询至少学过学号为“s001”同学所有一门课的其他同学学号和姓名;13、把“SC”表中“谌燕”老师教的课的成绩都更改为此课程的平均成绩;14、查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名;15、删除学习“谌燕”老师课的SC 表记录;16、向SC
9、表中插入一些记录,这些记录要求符合以下条件:没有上过编号“c002”课程的同学学号、“c002”号课的平均成绩;17、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分18、按各科平均成绩从低到高和及格率的百分数从高到低顺序19、查询不同老师所教不同课程平均分从高到低显示20、统计列印各科成绩,各分数段人数:课程ID,课程名称,100-85,85-70,70-60, b.score;*select * from sc awhere o=c001and exists(select * from sc b where o=c002 and a.scoreb.scoreand a.
10、sno = b.sno)*2. 查询平均成绩大于60 分的同学的学号和平均成绩;*select sno,avg(score) from sc group by sno having avg(score)60;*3. 3、查询所有同学的学号、姓名、选课数、总成绩;*select a.*,s.sname from (select sno,sum(score),count(cno) from sc group by sno) a ,student s where a.sno=s.sno错错误示范 select st.*,count(o),sum(sc.score)from student st,sc
11、where st.sno=sc.snogroup by st.sno select count(o) sum (sc.score) 不是单数分组,要先group,不然和 select stu.sno关联不起来*4. 4、查询姓“刘”的老师的个数;*select count(*) from teacher where tname like 刘%;*5. 5、查询没学过“谌燕”老师课的同学的学号、姓名;*select a.sno,a.sname from student awhere a.sno not in (select distinct s.sno from sc s,(select c.*
12、 from course c ,(select tno from teacher t where tname=谌燕)t where c.tno=t.tno) bwhere o = o ) *select * from student st where st.sno not in(select distinct sno from sc s join course c on o=ojoin teacher t on c.tno=t.tno where tname=谌燕)*6. 6、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名;*select st.* from studen
13、t stjoin sc a on st.sno=a.snojoin sc b on a.sno=b.snowhere o=c001 and o=c002 ;*7. 7、查询学过“谌燕”老师所教的所有课的同学的学号、姓名;*select st.* from student st join sc s on st.sno=s.snojoin course c on o=ojoin teacher t on c.tno=t.tnowhere t.tname=谌燕*8. 8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;*select * from student s
14、tjoin sc a on st.sno=a.snojoin sc b on st.sno=b.snowhere o=c002 and o=c001 and a.score b.score*9. 9、查询所有课程成绩小于60 分的同学的学号、姓名*select st.*,s.score from student stjoin sc s on st.sno=s.snojoin course c on o=owhere s.score 60*10. 查询没有学全所有课的同学的学号、姓名*select stu.sno,stu.sname,count(o) from student stuleft j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle_SQL_ 练习题 答案 32
限制150内