现有关系数据库如下:
 课程表 ( 课程号,课程名称,学分,时数 ) 
 学习表 ( 学号,课程号,成绩 )
 学生表 ( 学号,姓名,性别,年龄、专业、总分、奖学金 ) 
 请求解决以下问题
(1)查询没有获得奖学金、同时至少有一门课程成绩在 85 分以上的学生信息,包括学号、姓名和专业;
(2)查询没有任何一门课程成绩在 70 分以下的所有学生的信息,包括学号、姓名和专业; 
(3)对成绩得过满分的学生,如果没有获得奖学金的,将其奖学金设为 500元; 
(4) 定义学生成绩得过满分的课程视图 AAA ,包括课程号、名称和学分;

解决方案 »

  1.   

    --#1
    SELECT A.学号, A.姓名, A.专业
    FROM 学生表 A
    WHERE ISNULL(奖学金, 0) = 0
    AND EXISTS(SELECT TOP 1 1 FROM 学习表 WHERE 学号 = A.学号 AND 成绩 >= 85)
    --#2
    SELECT A.学号, A.姓名, A.专业
    FROM 学生表 A
    WHERE NOT EXISTS(SELECT TOP 1 1 FROM 学习表 WHERE 学号 = A.学号 AND 成绩 < 70)
    --#3
    UPDATE 学生表
    SET 奖学金 = 500
    WHERE ISNULL(奖学金, 0) = 0
    AND EXISTS(SELECT TOP 1 1 FROM 学习表 WHERE 学号 = A.学号 AND 成绩 = 100)
    --#4
    CREATE VIEW AAA AS
    SELECT A.课程号, B.课程名称, B.学分
    FROM 学习表 A 
    INNER JOIN 
    (SELECT DISTINCT 课程号 FROM 学习表 WHERE 成绩 = 100) B
    ON A.课程号 = B.课程号
      

  2.   

    --(1)查询没有获得奖学金、同时至少有一门课程成绩在 85 分以上的学生信息,包括学号、姓名和专业;
    select 学号,姓名,专业 from 学生表 where (奖学金 = 0 or 奖学金 is null) and 学号 in (distinct 学号 from 学习表 where 成绩 >= 85)--(2)查询没有任何一门课程成绩在 70 分以下的所有学生的信息,包括学号、姓名和专业;  
    select 学号,姓名,专业 from 学生表 where 学号 not in (distinct 学号 from 学习表 where 成绩 < 70)--(3)对成绩得过满分的学生,如果没有获得奖学金的,将其奖学金设为 500元;  
    update 学生表 
    set 奖学金 = 500
    where (奖学金 = 0 or 奖学金 is null) and 学号 in (distinct 学号 from 学习表 where 成绩 = 100)--(4) 定义学生成绩得过满分的课程视图 AAA ,包括课程号、名称和学分;
    create view AAA
    as
    select m.课程号 , n.课程名称 , n.学分
    from 学习表 m , 课程表 n
    where m.成绩 = 100 and m.课程号 = n.课程号