1、实验五实验 5.1 数据查询1) 要求以 School 数据库为例,在该数据库中存在四张表格,分别为: 表 STUDENTS(sid, sname, email, grade); 表 TEACHERS(tid, tname, email, salary); 表 COURSES(cid, cname, hour); 表 CHOICES(no, sid, tid, cid, score)在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES 中保存学生的选课记录。按以下要求对数据库进行查询操作:(1) 查询年级为 2001 的所有学生的名称并按编号升序排列。程序:S
2、elect snamefrom studentswhere grade=2001order by sid asc;(2) 查询学生的选课成绩合格的课程成绩。程序:Select scorefrom choiceswhere score59;(3) 查询课时是 48 或 60 的课程的名称。程序:select cnamefrom courseswhere hour=48or hour=60;(4) 查询所有课程名称中含有 data 的课程编号。程序:select cidfrom courseswhere cname like%data%;(5) 查询所有选课记录的课程号(不重复显示) 。程序:se
3、lect distinct cidfrom choices;(6) 统计所有教师的平均工资。程序:select avg(salary)from teachers;(7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。程序:select tid,avg(score)from choicesGROUP BY tid order by avg(score) desc;(8) 统计各个课程的选课人数和平均成绩。程序:select count(distinct sid),avg(score)from choicesgroup by cid;(9) 查询至少选修了三门课程的学生编号。
4、程序:select sidfrom choicesgroup by sidhaving count(cid)=3;(10) 查询编号 800009026 的学生所选的全部课程的课程名和成绩。程序:select distinct cname ,scorefrom courses,choiceswhere sid=800009026and courses.cid=choices.cid(11) 查询所有选修了 database 的学生的编号。程序:select sidfrom choices ,courseswhere cname=databaseand choices.cid=courses.c
5、id;(12) 求出选择了同一个课程的学生对。程序:Select x.sid,y .sidFrom choices x,choices yWhere x.cid=y.cid and x.sid=2;(14) 查询选修了编号 800009026 的学生所选的某个课程的学生编号。程序:select sidfrom choices where cid in (select cidfrom choiceswhere sid=800009026)and sid800009026;(15) 查询学生的基本信息及选修课程编号和成绩。程序:select students.sid,sname,email,grade,cid,scorefrom students,choiceswhere students.sid=choices.sid;(16) 查询学号 850955252 的学生的姓名和选修的课程名及成绩。程序:select sname,cname,scorefrom students,courses,choiceswhere choices.sid=850955252and students.sid=choices.sidand courses.cid=choices.cid;