MySQL视图创建与管理(实验五)

准备工作:脚本文件xkgl.sql下载:xkgl脚本.sql
1、新建一个视图V1记录1998年出生的女生信息,包括学号,姓名,性别,出生日期,并且要求透过该视图进行的更新操作只涉及1998年出生的女生。
提示:更新操作只涉及1998年出生的女生, 即检查视图!with check optin
代码:

create view v1 as select StudentID,StudentName,Sex,Birth from student where year(Birth)=1998 with local check option;

结果截图:

2、新建一个视图V2记录副教授的授课情况。
代码:

create view V3 as select CourseName,max(grade),min(grade),avg(grade) from grade join course on grade.CourseID=course.CourseID
group by CourseName;

结果截图:

3、新建一个视图V3记录各个选修课程的最高分,最低分和平均分。
代码:

create view V3
as 
select CourseName,max(grade),min(grade),avg(grade)
from grade join course on grade.CourseID=course.CourseID
group by CourseName;

结果截图:

4、修改第2题中的视图定义改为记录讲师的授课情况
代码:

create or replace view V2 as select
CourseName,BookNmae,credit,Teachername,ClassName from teacher join schedule on teacher.TeacherID=schedule.TeacherID
join course on course.CourseID=schedule.CourseID join class
on
class.ClassID=schedule.ClassID where Profession='讲师';

结果截图:

5、通过第1题中的视图向student表中插入一条记录(St0109020005,zhangsan,女,1998-09-09)。
代码:

insert into V1 values('St0109020005','zhangsan','女','1998-09-09');

结果截图:

6、通过第1题中的视图将student表中的St0109020005号学生的姓名改为刘晨。
代码:

update V1 set StudentName='刘晨' 
where StudentID='St0109020005';

结果截图:

7、通过第1题中的视图删除student表中的St0109020005号学生记录。
代码:

delete from V1 where StudentID='St0109020005';

结果截图:

8、利用SQL同时删除第2题和3题中的视图。
代码:

drop view V2,V3;

结果截图:

【分析与思考】
1、 通过视图中插入的数据能进入到基本表中去吗?
答:会的,对DBMS而言,对视图的操作最终都会转化为对基本表的操作
2、with check option能起什么作用?
答:WITH CHECK OPTION 表示对UPDATE、INSERT和DELETE操作时保持更新、插入或删除的行满足视图定义的谓词条件(即子查询中的条件表达式);
3、修改基本表的数据会自动反映到相应的视图中去吗?
答:如果视图中数据是来自于一个表时,修改视图中的数据,表数据会更新。而且修改表中数据时,对应视图也会更新。但是如果视图数据来源于两个表时,修改视图数据时会报错,无法修改。
4、哪些视图中的数据不可以增删改操作?
答:(1)视图中的select语句包含聚合函数、列的运算、 group by 子句或distinct选项;
(2)from 子句中包含多个表或者union运算符;
(3)指定了with check option,修改后的数据不满足视 图定义的范围;
(4)执行update、delete命令时,所删除与更新的数据 未包含在视图的结果集中。

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值