SQL实验2 - 图文

2020-04-14 22:04

SQL实验2

利用查询分析器完成实验

School

数据库中存在以下四张表:

表STUDENTS( sid,sname,email,grade) 表TEACHERS(tid,tname,email,salary) 表COURSES(cid,cname,hour) 表CHOICES(no,sid,cid,tid,score)

学生选择课程,一个课程对应一个老师,表CHOICES保存学生的选课记录,对数据库进行以下操作:

1、查询年级为2001的所有学生的名字,并按标号顺序排列。 select sname from STUDENTS where grade='2001' ORDER BY sid ASC

2、查询学生的选修课成绩合格的课程成绩,并把成绩换算成积分,60分对应积分1,每增加1分,积分增加0.1 select cid, score, 1+0.1*(score-60) jifen from CHOICES

Where score>=60;

3、查询学时是48或64的课程名称

select cname from COURSES where hour=48 OR hour=64 4、查询所有课程名称中含有data 的课程编号 select cid from COURSES where cname LIKE 'úta%'

5、查询所有选课记录的课程号(不重复显示)

select distinct cid from CHOICES 6、统计所有老师的平均工资

select AVG(salary) from TEACHERS

7、查询所有老师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列

select tid , AVG(score) from CHOICES GROUP BY tid , cid

ORDER BY AVG(score) DESC;

8、统计每个课程的选课人数和平均成绩 select cid , count(distinct sid), AVG(score) from CHOICES GROUP BY cid;

9、查询至少选修了三门课程的学生编号 select sid from CHOICES GROUP BY sid having count(cid)>=3;

10、查询编号为800009026的学生姓名、所选的全部课程的课程名

和成绩(3行)

select distinct sname,cname , score from STUDENTS,COURSES, CHOICES

where STUDENTS.sid = '800009026' and

STUDENTS.sid = CHOICES.sid and COURSES.cid=CHOICES.cid ;

11、查询所有选修了database的学生

select sid from COURSES , CHOICES

where COURSES.cid = CHOICES.cid and cname = 'database'; 12、求出选择了同一门课程的学生对 13、查询至少被两名学生选修了的课程编号 select cid from CHOICES

GROUP BY cid having count(distinct sid)>=2;

14、查询选修了编号800009026的学生所选的某个课程的学生编号 select distinct sid

from CHOICES where cid in (select cid from CHOICES where sid='800009026') and sid<>'800009026'; 15、查询学生的基本信息及选修课程编号和成绩

select STUDENTS.sid , sname , email , grade , cid , score from STUDENTS,CHOICES

where STUDENTS.sid =CHOICES.sid;

16、查询学号800009026的学生的姓名和选修的课程的名称及成绩(3 行受影响)

select sname, cname, score from STUDENTS,COURSES,CHOICES

where CHOICES.sid='800009026' and

CHOICES.sid=STUDENTS.sid and COURSES.cid=CHOICES.cid; 17、查询与学号850955252的学生同年级的所有学生资料

select * from STUDENTS where grade=(select grade from STUDENTS where sid='850955252' ); 18、查询所有有选课的学生的详细信息

select STUDENTS.sid , sname , email , grade , no,cid , score from STUDENTS,CHOICES

Where cid is NOT NULL and STUDENTS.sid =CHOICES.sid; 19、查询没有学生选的课程编号(0行) select cid from CHOICES GROUP BY cid having count(sid)=0;

20、查询选修了课程名为C++的学生学号和姓名 (所影响的行数为 5876 行)

select sid, sname from STUDENTS where sid in

(select sid from CHOICES where cid in (select cid

from COURSES where cname='C++'));

21、找出选修课程成绩最好的选修记录

select * from CHOICES where score in(select MAX(score) from CHOICES);

22、找出课程UML或课程C++课时一样的课程名称

select cname from COURSES where hour in (select hour from COURSES where cname='UML' OR cname='C++' );

23、查询所有选修编号10001的课程的学生姓名

select STUDENTS.sname from STUDENTS,CHOICES where STUDENTS.sid=CHOICES.sid and cid='10001';

24、查询选修了所有课程的学生姓名

select sname from STUDENTS where not exists

(select * from COURSES where not exists

(select * from CHOICES where sid=STUDENTS.sid and cid=COURSES.cid) );

25、利用集合运算查询选修了课程C++或课程Java的学生编号

select sid from CHOICES

where sid in(select sid from COURSES where cname='C++') UNION

select sid from CHOICES

where sid in(select sid from COURSES where cname='Java');

26、实现集合交运算,查询选修了课程C++和课程Java的学生编号(所影响的行数为 306 行)

Select distinct sid from CHOICES,COURSES

where COURSES.cid=CHOICES.cid and COURSES.cname='C++' and sid in (Select distinct sid from CHOICES,COURSES where COURSES.cid=CHOICES.cid and COURSES.cname='Java') 第二种:

select sid from CHOICES

where sid in(select sid from COURSES where cname='C++') intersect

select sid from CHOICES

where sid in(select sid from COURSES where cname='Java');


SQL实验2 - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第三届全国管理案例精英赛(2015)比赛手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: