山东大学数据库实验实验2答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
update dbtest set test=2
select * from dbscore
1. 找出没有选修任何课程的学生的学号、姓名。
create table test2_01 as
select sid,name
from pub.student
where sid not in
(select sid
from pub.STUDENT_COURSE)
2. 找出至少选修了学号为“200900130417”的学生所选修的一门课的学生的学号、姓名。
create table test2_02 as
select sid,name
from pub.student
where sid in
(select sid
from pub.student_course
where cid in(
select cid
from pub.student_course
where sid=200900130417))
3. 找出至少选修了一门其先行课程号为“300002”号课程的学生的学号、姓名。
create table test2_03 as
select name,sid
from pub.student
where sid in(
select sid
from pub.student_course
where cid in(
select cid
from pub.course
where fcid=300002))
4. 找出选修了“操作系统”并且也选修了“数据结构”的学生的学号、姓名。
create table test2_04 as
select a.sid,
from pub.student a,pub.course b,pub.student_course c
where a.sid=c.sid and b.cid=c.cid and ='操作系统'
intersect
(select a.sid,
from pub.student a,pub.course b,pub.student_course c
where a.sid=c.sid and b.cid=c.cid and ='数据结构')
5. 查询20岁的所有有选课的学生的学号、姓名、平均成绩(avg_score,此为列名,下同)(平均成绩四舍五入到个位)、总成绩(sum_score)
Test2_05有四个列,并且列名必须是:sid、name、avg_score、sum_score。通过下面方式实现列名定义:
create table test2_05 as select sid,name,(表达式) avg_score,(表达式) sum_score from ……
create table test2_05 as
select b.sid,,a.avg_score,a.sum_score
from (select sid,round(avg(score)) avg_score,sum(score) sum_score
from pub.STUDENT_COURSE
where cid is not null
group by sid
) a,pub.student b
where a.sid=b.sid and a.age=20
6. 查询所有课以及这门课的最高成绩,test2_06有两个列:课程号cid、最高成绩max_score
create table test2_06 as
select cid,max(score) max_score
from pub.STUDENT_COURSE
group by cid
7. 查询所有不姓张、不姓李、也不姓王的学生的学号sid、姓名name
7.create table test2_07 as
select sid,name
from pub.student
where name not like '李%' and name not like '张%' and name not like '王%'
错误:create table test2_07 as
select sid,name
from pub.student
where name not in ('张%','王%','李%')
8. 查询学生表中每一个姓氏及其人数(不考虑复姓),test2_08有两个列:second_name、p_count
8.create table test2_08 as
select second_name,count(sid) p_count
from(
select substr(name,1,1) second_name,sid
from pub.student)
group by second_name
9. 查询选修了300003号课程的学生的sid、name、score
create table test2_09 as
select a.sid,,a.score
from PUB.STUDENT_COURSE a,PUB.STUDENT b
where a.sid=b.sid and a.cid='300003'
10.查所有有成绩记录的
学生sid和cid
10.create table test2_10 as
select sid,cid
from PUB.STUDENT_COURSE
where score is not null