zoukankan      html  css  js  c++  java
  • 数据库实验—视图定义与操作

    (1)定义“IS”系学生基本情况视图V_IS 并查询结果

    create view V_IS 
    as 
    select Sno, Sname, Sage from S where Sdept = 'IS';

    (2)将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果

    create view V_S_C_G 
    ss select S.Sno, Sname, C.Cno, Cname, Grade
    from S, C,SC where S.Sno = SC.Sno and C.Cno = SC.Cno;

      (3)将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果

    create view V_NUM_AVG
    as select count(Sno) as NUM, avg(Sage) as AVG
    from S group by Sdept;

     (4)定义一个反映学生出生年份的视图V_YEAR并查询结果

    create view V_YEAR 
    as select (2020 – Sage) as YEAR from S;

     (5)将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果

    create view V_AVG_S_G
    as 
    select count(Cno) as NUM, avg(Grade) as AVG
    from SC group by Sno;

     (6)将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果

    create view V_AVG_C_G
    as 
    select Cno,count(Sno) as NUM,avg(Grade) as AVG
    from SC group by Cno;

    (7)查询平均成绩为90分以上的学生学号、姓名和成绩

    select Sno,Sname, Grade from V_S_C_G 
    where Sno in 
    select Sno from V_S_C_G 
    group by Sno 
    having avg(Grade) >=90;

     (8)查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩

    select * from V_S_C_G
    where Sno in 
    (select X.Sno from V_S_C_G X
    where not exists
    (select Y.Grade from V_S_C_G Y
    where Grade <=
    (select avg(Grade) from V_S_C_G Z 
    where (Y.Cno = Z.Cno) and (X.Sno = Y.Sno)))); 

    (9)按系统计各系平均成绩在80分以上的人数,结果按降序排列

    select Sdept,count(Sno) as NUM. from S
    where Sno in 
    (select V_S_C_G.Sno from V_S_C_G 
    group by V_S_C_G.Sno 
    having avg(Grade)>=80) 
    group by Sdept;

    (10)通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM” 并查询结果

    update V_IS set Sname = ‘周芷若’ where Sno =1’;
    
    update V_Is set Sname = ‘乔峰’ where Sno =4’;
    
    select * from S;

    (11)通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果

    insert into V_IS(Sno ,Sname, Sage,Sdept) values
    ('S12', 'YAN XI', 19. 'IS')

    (12)通过视图V_IS,新增加一个学生记录 ('10','木婉清',19,'IS'),并查询结果

    insert into V_IS(Sno, Sname, Sage, Sdept)values
    ('10','木婉清',19,'IS');
    
    select * from S;

    (13)通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果

    delete from V_IS 
    where Sno = ‘s12’ or Sno = ‘S3’

    (14)要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否能实现?

    可以;
    update V_SC_G set Sname = ‘S12_MMM’ 
    where Sno = ‘S12’;

    (15)要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?

    不能实现。因为V_AVG_S_G视图的字段来自聚集函数,里面有group by;

  • 相关阅读:
    IE10/IE9 Click Enter will trigger submission
    错误代码以及错误消息提示-如何更好地管理与维护消息资源
    Redmine2.6.1 升级与Agile插件安装
    编译安装的 mysql apache 用 service mysqld start 来启动
    编译安装php 5.5 缺少依赖包 及解决方案
    linux 下mysql的启动 、调试、排错
    linux 的 磁盘操作
    mysql 触发器的创建 修改 删除
    创建mysql存储过程,调用 及删除
    存储函数的创建 删除 修改
  • 原文地址:https://www.cnblogs.com/djlobster/p/13031843.html
Copyright © 2011-2022 走看看