OracleSQL练习题及答案Word下载.docx

上传人:b****6 文档编号:19884442 上传时间:2023-01-11 格式:DOCX 页数:11 大小:88.09KB
下载 相关 举报
OracleSQL练习题及答案Word下载.docx_第1页
第1页 / 共11页
OracleSQL练习题及答案Word下载.docx_第2页
第2页 / 共11页
OracleSQL练习题及答案Word下载.docx_第3页
第3页 / 共11页
OracleSQL练习题及答案Word下载.docx_第4页
第4页 / 共11页
OracleSQL练习题及答案Word下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

OracleSQL练习题及答案Word下载.docx

《OracleSQL练习题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《OracleSQL练习题及答案Word下载.docx(11页珍藏版)》请在冰豆网上搜索。

OracleSQL练习题及答案Word下载.docx

s002'

李四'

s003'

吴鹏'

25,'

s004'

琴沁'

20,'

女'

s005'

王丽'

s006'

李波'

21,'

s007'

刘玉'

s008'

萧蓉'

s009'

陈萧晓'

s010'

陈美'

22,'

commit;

/******************初始化教师表***********************/

insertintoteachervalues('

t001'

'

刘阳'

t002'

谌燕'

t003'

胡明星'

/***************初始化课程表****************************/

insertintocoursevalues('

c001'

J2SE'

c002'

JavaWeb'

c003'

SSH'

c004'

Oracle'

c005'

SQLSERVER2005'

c006'

C#'

c007'

JavaScript'

c008'

DIV+CSS'

c009'

PHP'

c010'

EJB3.0'

/***************初始化成绩表***********************/

insertintoscvalues('

78.9);

80.9);

81.9);

60.9);

82.9);

72.9);

59'

58'

练习:

注意:

以下练习中的数据是根据初始化到数据库中的数据来写的SQL语句,请大家务必注意。

1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;

2、查询平均成绩大于60分的同学的学号和平均成绩;

3、查询所有同学的学号、姓名、选课数、总成绩;

4、查询姓“刘”的老师的个数;

5、查询没学过“谌燕”老师课的同学的学号、姓名;

6、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名;

7、查询学过“谌燕”老师所教的所有课的同学的学号、姓名;

8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;

9、查询所有课程成绩小于60分的同学的学号、姓名;

10、查询没有学全所有课的同学的学号、姓名;

11、查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名;

12、查询至少学过学号为“s001”同学所有一门课的其他同学学号和姓名;

13、把“SC”表中“谌燕”老师教的课的成绩都更改为此课程的平均成绩;

14、查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名;

15、删除学习“谌燕”老师课的SC表记录;

16、向SC表中插入一些记录,这些记录要求符合以下条件:

没有上过编号“c002”课程的同学学号、“c002”号课的平均成绩;

17、查询各科成绩最高和最低的分:

以如下形式显示:

课程ID,最高分,最低分

18、按各科平均成绩从低到高和及格率的百分数从高到低顺序

19、查询不同老师所教不同课程平均分从高到低显示

20、统计列印各科成绩,各分数段人数:

课程ID,课程名称,[100-85],[85-70],[70-60],[<

60]

21、查询各科成绩前三名的记录:

(不考虑成绩并列情况)

22、查询每门课程被选修的学生数

23、查询出只选修了一门课程的全部学生的学号和姓名

24、查询男生、女生人数

25、查询姓“张”的学生名单

26、查询同名同性学生名单,并统计同名人数

27、1981年出生的学生名单(注:

Student表中Sage列的类型是number)

28、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

29、查询平均成绩大于85的所有学生的学号、姓名和平均成绩

30、查询课程名称为“数据库”,且分数低于60的学生姓名和分数

31、查询所有学生的选课情况;

32、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;

33、查询不及格的课程,并按课程号从大到小排列

34、查询课程编号为c001且课程成绩在80分以上的学生的学号和姓名;

35、求选了课程的学生人数

36、查询选修“谌燕”老师所授课程的学生中,成绩最高的学生姓名及其成绩

37、查询各个课程及相应的选修人数

38、查询不同课程成绩相同的学生的学号、课程号、学生成绩

39、查询每门功课成绩最好的前两名

40、统计每门课程的学生选修人数(超过10人的课程才统计)。

要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

41、检索至少选修两门课程的学生学号

42、查询全部学生都选修的课程的课程号和课程名

43、查询没学过“谌燕”老师讲授的任一门课程的学生姓名

44、查询两门以上不及格课程的同学的学号及其平均成绩

45、检索“c004”课程分数小于60,按分数降序排列的同学学号

46、删除“s002”同学的“c001”课程的成绩

1.查询“c001”课程比“c002”课程成绩高的所有学生的学号

*********************************

selecta.*from

(select*fromscawhereo='

)a,

(select*fromscbwhereo='

)b

wherea.sno=b.snoanda.score>

b.score;

select*fromsca

whereo='

andexists(select*fromscbwhereo='

anda.score>

b.score

anda.sno=b.sno)

2.查询平均成绩大于60分的同学的学号和平均成绩;

selectsno,avg(score)fromscgroupbysnohavingavg(score)>

60;

3.3、查询所有同学的学号、姓名、选课数、总成绩;

selecta.*,s.snamefrom(selectsno,sum(score),count(cno)fromscgroupbysno)a,studentswherea.sno=s.sno

错错误示范

selectst.*,count(o),sum(sc.score)

fromstudentst,sc

wherest.sno=sc.sno

groupbyst.sno

selectcount(o)sum(sc.score)不是单数分组,要先group,不然和selectstu.sno关联不起来

4.4、查询姓“刘”的老师的个数;

selectcount(*)fromteacherwheretnamelike'

刘%'

;

5.5、查询没学过“谌燕”老师课的同学的学号、姓名;

selecta.sno,a.snamefromstudenta

wherea.sno

notin

(selectdistincts.sno

fromscs,

(selectc.*

fromcoursec,

(selecttno

fromteachert

wheretname='

)t

wherec.tno=t.tno)b

whereo=o)

select*fromstudentstwherest.snonotin

(selectdistinctsnofromscsjoincoursecono=o

jointeachertonc.tno=t.tnowheretname='

6.6、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名;

selectst.*fromstudentst

joinscaonst.sno=a.sno

joinscbona.sno=b.sno

ando='

;

7.7、查询学过“谌燕”老师所教的所有课的同学的学号、姓名;

selectst.*fromstudentstjoinscsonst.sno=s.sno

joincoursecono=o

jointeachertonc.tno=t.tno

wheret.tname='

8.8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;

select*fromstudentst

joinscbonst.sno=b.sno

anda.score<

b.score

9.9、查询所有课程成绩小于60分的同学的学号、姓名

selectst.*,s.scorefromstudentst

joinscsonst.sno=s.sno

wheres.score<

60

10.查询没有学全所有课的同学的学号、姓名

selectstu.sno,stu.sname,count(o)fromstudentstu

leftjoinsconstu.sno=sc.sno

groupbystu.sno,stu.sname

havingcount(o)<

(selectcount(distinctcno)fromcourse)

===================================

select*fromstudentwheresnoin

(selectsnofrom

(selectstu.sno,ofromstudentstu

crossjoincoursec

minus

selectsno,cnofromsc)

11.查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名

selectst.*fromstudentst,

(selectdistincta.snofrom

(select*fromsc)a,

(select*fromscwheresc.sno='

whereo=o)h

wherest.sno=h.snoandst.sno<

>

'

12.查询至少学过学号为“s001”同学所有一门课的其他同学学号和姓名;

select*fromsc

leftjoinstudentst

onst.sno=sc.sno

wheresc.sno<

andoin

(selectcnofromsc

wheresno='

13.把“SC”表中“谌燕”老师教的课的成绩都更改为此课程的平均成绩

updatesccsetscore=(selectavg(c.score)fromcoursea,teacherb

wherea.tno=b.tno

andb.tname='

ando=o

groupbyo)

wherecnoin(

selectcnofromcoursea,teacherb

不会做14.(原来是错的我改过来了)查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名

15.删除学习“谌燕”老师课的SC表记录;

deletefromsc

whereoin

selectcnofromcoursec

leftjointeachertonc.tno=t.tno

16.16、向SC表中插入一些记录,这些记录要求符合以下条件:

insertintosc(sno,cno,score)

selectdistinctst.sno,o,(selectavg(score)fromscwherecno='

wherenotexists

(select*fromscwherecno='

andsc.sno=st.sno)ando='

17.17、查询各科成绩最高和最低的分:

selectcno,max(score),min(score)fromscgroupbycno;

18.18、按各科平均成绩从低到高和及格率的百分数从高到低顺序

selectcno,avg(score),round(sum(casewhenscore>

=60then1else0end)/count(*),2)*100||’%’

as及格率

fromscgroupbycno

orderbyavg(score),及格率desc

19.19、查询不同老师所教不同课程平均分从高到低显示

selectmax(t.tno),max(t.tname),max(o),max(ame),o,avg(score)fromsc,coursec,teachert

whereo=oandc.tno=t.tno

groupbyo

orderbyavg(score)desc

20.20、统计列印各科成绩,各分数段人数:

*********************************答案是错的

selecto,ame,

sum(casewhenscorebetween100and85then1else0end)AS"

[100-85]"

sum(casewhenscorebetween85and70then1else0end)AS"

[85-70]"

sum(casewhenscorebetween70and60then1else0end)AS"

[70-60]"

sum(casewhenscore<

60then1else0end)AS"

[<

60]"

fromsc,coursec

whereo=o

groupbyo,ame;

改正后的

sum(casewhenscore>

85andscore<

100then1else0end)85到100,

70andscore<

850then1else0end)70到85,

60andthen1else0end)60到70,

60then1else0end)60以下

wheresc.c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1