学生表S、课程表C和学生选课表SC,它们的结构如下,使用SQL完成下列操作。
S (S#, SN, SEX, AGE, DEPT)
C (C#, CN, TEACHER )
SC (S#, C#, GRADE)
其中,S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,TEACHER为任课教师,GRADE为成绩。1、 用SQL找出“程序设计”课程成绩在90分以上的学生姓名。2、 检索选修课程“C2”的学生中成绩最高的学生的学号。3、 检索选修4门以上课程的学生的总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。4、 检索不学C6的男学生的学号和姓名(S#, SN)。5、 从SC表中把吴老师的女学生选课元组删去。6、 把吴老师的女同学选课成绩增加4%

解决方案 »

  1.   

    S (S#, SN, SEX, AGE, DEPT)
    C (C#, CN, TEACHER )
    SC (S#, C#, GRADE)
    其中,S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,TEACHER为任课教师,GRADE为成绩。1、 用SQL找出“程序设计”课程成绩在90分以上的学生姓名。
    SELECT SN
    FROM SC
    JOIN C ON SC.C#=C.C#
    JOIN S ON SC.S#=S.S#
    WHERE CN='程序设计' AND GRADE>90 2、 检索选修课程“C2”的学生中成绩最高的学生的学号。
    SELECT TOP 1 S#
    FROM SC
    JOIN C ON SC.C#=C.C#
    WHERE CN='C2'
    ORDER BY GRADE DESC3、 检索选修4门以上课程的学生的总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
    SELECT S#, SUMGRADE = SUM(GRADE)
    FROM SC 
    WHERE GRADE>=60
    GROUP BY S#
    HAVING COUNT(1)>=4
    ORDER BY SUMGRADE DESC4、 检索不学C6的男学生的学号和姓名(S#, SN)。
    SELECT S#, SN
    FROM S
    WHERE NOT EXISTS (
      SELECT 1 
      FROM SC 
      JOIN C ON C.C#=SC.C#
      WHERE CN = 'C6' AND SC.S#=S.S#)5、 从SC表中把吴老师的女学生选课元组删去。
    DELETE SC
    FROM SC
    JOIN C ON SC.C#=C.C#
    JOIN S ON SC.S#=S.S#
    WHERE TEACHER='吴老师' AND SEX='女'6、 把吴老师的女同学选课成绩增加4% 
    UPDATE SC SET
      GRADE = GRADE*1.04
    FROM SC
    JOIN C ON SC.C#=C.C#
    JOIN S ON SC.S#=S.S#
    WHERE TEACHER='吴老师' AND SEX='女'