已知有三个表:学生表(学号,姓名,性别,年龄,院系号,入学成绩)
课程表(课程号,课程名,学分,先修课)
成绩表(学号,课程号,成绩)
    1、查询选修了“数据结构”或者“网络工程”课程的学生学号,课程号,成绩
    2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别
    3、查询年龄最大的学生信息
    4、查询“06”或者“02”院系的学生学号,课程号和所选课程的成绩,按课程号降序排列,课程号相同的按学号升序排列
    5、在学生表中插入一条新记录,学号为“s9”,姓名为“张英”,年龄18,性别女,院系号为“01”
    6、删除所有先修课程为空的课程记录
    7、更新所有选修了“C++”课程的同学这门课的成绩,提高5分
    8、查询选修了两门课程以上的同学的所选课程数、平均分、最高分、最低分

解决方案 »

  1.   

    1、查询选修了“数据结构”或者“网络工程”课程的学生学号,课程号,成绩 
    select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.学号 = b.学号 and b.课程号 = c.课程号 and (c.课程名 = '数据结构' or c.课程名 = '网络工程')select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 in ('数据结构' , '网络工程')
     
    2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别 
    select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and (c.课程名 = '数据结构' or c.课程名 = '网络工程')select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 in ('数据结构' , '网络工程')
    3、查询年龄最大的学生信息 
    --如果年龄最大的只有一个人
    select top 1 a.* from 学生表 a order by 年龄 desc--如果年龄最大的有多个人
    select a.* from 学生表 a where 年龄 = (select max(年龄) from 学生表)4、查询“06”或者“02”院系的学生学号,课程号和所选课程的成绩,按课程号降序排列,课程号相同的按学号升序排列 
    select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.学号 = b.学号 and b.课程号 = c.课程号 
    order by b.课程号 desc , a.学号5、在学生表中插入一条新记录,学号为“s9”,姓名为“张英”,年龄18,性别女,院系号为“01” 
    --插入的字段顺序为:学号,姓名,性别,年龄,院系号,入学成绩,
    --如果入学成绩初始为0
    insert into 学生表 values('s9' , '张英' , '女' , 18 , '01' , 0)
    --如果入学成绩初始为null
    insert into 学生表 values('s9' , '张英' , '女' , 18 , '01' , null)--如果你的表字段顺序不是:学号,姓名,性别,年龄,院系号,入学成绩,则在插入时写完全。
    --如果入学成绩初始为0
    insert into 学生表(学号,姓名,性别,年龄,院系号,入学成绩) values('s9' , '张英' , '女' , 18 , '01' , 0)
    --如果入学成绩初始为null
    insert into 学生表(学号,姓名,性别,年龄,院系号,入学成绩) values('s9' , '张英' , '女' , 18 , '01' , null)
    6、删除所有先修课程为空的课程记录 
    delete from 课程表 where 先修课 is null7、更新所有选修了“C++”课程的同学这门课的成绩,提高5分 
    update 成绩表
    set 成绩 = 成绩 + 5
    from 成绩表 m , 课程表 n 
    where m.课程号 = n.课程号 and n.课程名 = 'C++'
    8、查询选修了两门课程以上的同学的所选课程数、平均分、最高分、最低分
    select a.学号,
           a.姓名,
           所选课程数 = count(1),
           平均分 = avg(b.成绩),
           最高分 = max(b.成绩),
           最低分 = min(b.b.成绩)
    from 学生表 a , 成绩表 b
    where a.学号 = b.学号
    group by a.学号,a.姓名
    having count(1) > 1
      

  2.   

    上面的2写错了.2、查询院系号为“06”的选修了“数据结构”课程的学生学号,姓名,性别 
    select a.学号 , b.课程号, b.成绩
    from  学生表 a , 成绩表 b , 课程表 c
    where a.院系号 = '06' and a.学号 = b.学号 and b.课程号 = c.课程号 and c.课程名 = '数据结构'