表一:学生情况信息表 XS
学号 姓名 专业名 性别 出生时间 总学分 备注
主键表二:课程表 KC
课程号 课程名 开课学期 学时 学分
主键表三 学生与课程表 XS_KC
学号 课程号 成绩 学分
主键 主键查询操作
1、查询所有学生所选修的课程名,要求没有重复的记录。
2、显示以课程名分组后的存在最高分的课程名及最高分。
3、显示和“李方方”同学同年生的同学的学号,姓名。
4、显示男生所选修课程的课程名及平均成绩。
5、显示XS_KC表中每位学生的全部课程的平均成绩。
创建游标
  1.创建游标MYCURSOR,查询结果集为所有学生的总学分,并定义变量@score将当前结果读取至@score变量中,用WHILE语句循环,若查找到:。分以一:的记录则删除(在WHERE子句中使角CURRENT OF游标名,指明是当前游标指针所指向的记录。)若在30至40之间的记录,则增加20分,操作完成后关闭游标并删除。注:CURRENT OF关键字使用时游标定义中不出现READ-ONLY或FAST FORWARD。
一定要用SQL语句来实现,谢谢

解决方案 »

  1.   

    1.select a.学号,b.课程名 from table3 a,table2 b where a.课程号=b.课程号
    2.select 课程名,max(成绩) as 成绩 from table3 a,table2 b where a.课程号=b.课程号 group by 课程名
    3.select 学号,姓名 from table1 where year(出生时间) in(select year(出生时间) from table1 where name='李方方'
      

  2.   

    1、查询所有学生所选修的课程名,要求没有重复的记录。
    select DISTINCT a.学号,b.课程名 from KC a,XS_KC
    b where a.课程号=b.课程号
    2、SELECT a.课程号,a.课程名,MAX(b.成绩) 最高分
    FROM KC a,XS_KC b where a.课程号=b.课程号 GROUP BY a.课程号,a.课程名3、SELECT 学号,姓名 FROM XS
    WHERE 姓名<>'李方方' AND 出生时间 IN (SELECT 出生时间 FROM XS WHERE 姓名='李方方' )
      

  3.   

    4、显示男生所选修课程的课程名及平均成绩。 (注:性别是用bit型的,1表示男,2表示女)
    5、显示XS_KC表中每位学生的全部课程的平均成绩。
      

  4.   

    4、显示男生所选修课程的课程名及平均成绩。
    SELECT B.课程名,AVG(C.成绩) 平均成绩
    FROM XS A,KC B, XS_KC C
    WHERE A.性别='男' AND A.学号=C.学号 AND B.课程号=C.课程号
    GROUP BY B.课程名5、显示XS_KC表中每位学生的全部课程的平均成绩。
    SELECT 学号,SUM(成绩)/(COUNT(课程号)) 平均成绩
    FROM XS_KC GROUP BY 学号