学生(学号,姓名,性别,所在系)
课程(课程号,课程名,先行课)
选课(学号,课程号,成绩)
1.请问怎样建立在对选课表更改数据时,服从完整性约束的UPDATE触发器
2.列出学号,姓名及学习情况,学习情况用好(平均成绩大于85),较好(平均成绩在70和85之间),一般(75和60之间),差(小于60)来表示。
请教各位了,本人初学者,概念上有点模糊,谢谢了。。

解决方案 »

  1.   

    /*create table tt(Sno varchar(20),Cname varchar(20),Score int)
    insert into tt
    select '1'  ,    '语文',     80
    union all 
    select '1'  ,    '历史',     55
    union all 
    select '1'  ,    '数学',     98
    union all 
    select '1'  ,    '生物',     66
    union all 
    select '1'  ,    '政治',     88
    union all 
    select '1'  ,    '英语',     92
    union all 
    select '2'  ,    '英语',     99
    union all 
    select '2'  ,    '政治',     88
    union all 
    select '3'  ,    '数学',     45
    union all 
    select '3'  ,    '生物',     23
    union all 
    select '3'  ,    '化学',     41
    union all 
    select '3'  ,    '物理',     0
    union all 
    select '3'  ,    '法律',     0   
    */
    select * from tt
    /*
    Sno     Cname  Score
    ---------------------------
    1 语文 80
    1 历史 55
    1 数学 98
    1 生物 66
    1 政治 88
    1 英语 92
    2 英语 99
    2 政治 88
    3 数学 45
    3 生物 23
    3 化学 41
    3 物理 0
    3 法律 0*/ select Sno,case when avg(Score)>85 then '好' 
             when avg(Score)>=70 then '较好'
     when avg(Score)>=60 then '一般'
     when avg(Score)<60 then '差' end  as '学习情况'
     from tt group by Sno
    /*
    Sno    学习情况
    ---------------
    1 较好
    2 好
    3 差*/drop table tt