数据库实验7 数据库视图的定义与使用

实验7 数据库视图的定义与使用

  • 7.1实验目的及要求

    掌握视图的用法,加深对视图作用的理解

  • 7.2实验内容

1.创建、修改和删除视图
2.利用视图进行查询

  • 7.3实验步骤

7.3.1视图的创建(查看视图结果用select语句)
1.创建网络工程学生信息的视图;
Create view IS_Student as select sno,sname,sage from student where sdept=’网络工程’;
在这里插入图片描述

2.创建网络工程选修了1号课程的学生的视图;
Create view IS_S1 as select student.sno,cno,grade from student,sc where student.sno=sc.sno and sdept=’网络工程’ and cno=’1’;
在这里插入图片描述
3.建立网络工程选修了1号课程且成绩在90分以上的学生的视图:
Create view IS_S2 as select * from IS_S1 where grade>=90;
在这里插入图片描述

4.创建一个反映学生出生年份的视图;
Create view BT_S(sno,sname,出生年份)as select sno,sname,year(now())-sage from student;
在这里插入图片描述

5.将所有女生的记录定义为一个视图:
Create view F_student as select * from student where ssex=’女’;
在这里插入图片描述

6.将所有学生的学号和他的平均成绩定义为一个视图;
Create view S_G(sno,avg_grade) as select sno,avg(grade) from sc group by sno;
在这里插入图片描述
数据库实验7 数据库视图的定义与使用_第1张图片

7.3.2视图结构的修改
7.将视图F_student修改为网络工程的所有女士的视图
Alter view F_student as select * from student where ssex=’女’and sdept=’网络工程’;
说明:视图结构的修改的AS后的select语句与创建视图的完全一致,引入结构修改的目的是 了避免与视图相关的数据库对象的变换,如触发器,关联等。
在这里插入图片描述

7.3.3 视图查询
8.在网络工程的学生视图中查询年龄小于20岁的学生;
Select * from IS_student where sage<20;
在这里插入图片描述

9.查询网络工程选修了1号课程的学生;
Select sc.cno,sname from IS_Student,sc Where IS_Student.sno=sc.sno and cno=’1’;
在这里插入图片描述

10.在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩
select * from S_G where avg_grade>=90;
在这里插入图片描述

7.3.4更新视图
11.将网络工程学生视图IS_Student中学号为“12002”的学生姓名改为“刘辰”
Update IS_student set sname=”刘辰” where sno=’12002’;
在这里插入图片描述

比较:update IS_Student set sname=’刘辰’where sno=’12003’次语句不能实现数据的更新为什么?
在这里插入图片描述

12.向网络工程学生视图IS_Student 中插入一个新的学生的记录,学号为12009,姓名为“赵新”,年龄为20岁。
Insert into IS_Student values(‘12009’,‘赵新’,20);
在这里插入图片描述

//此处执行后显示Field of vew ‘xsgl.is_student’underlying table doesn’t have a default value,即在此视图中插入数据不能使基础表获得默认数值;
13.删除网络工程学生视图IS_Student 中学号为12009的学生的记录;
Delete from IS_student where sno=’12009’;(能删除成功吗,存在什么问题吗?)
在这里插入图片描述

数据库实验7 数据库视图的定义与使用_第2张图片

7.3.5更新视图
14.删除视图IS_student;
Drop view IS_student;
在这里插入图片描述

思考:

  1. 创建所有学生的基本信息和选课信息的视图
    Create view IS_Student(学号,姓名,性别,年龄,系别)as select sno,sname,ssex,sage,sdept from student;
    Create view Course_view as select Student.,Course.,Grade from Student,Sc ,Course where Student.sno=Sc.Sno=Course.cno;
    2.基于上述视图查询各系学生各门功课的平均成绩
    Select sno,sname,cname,sdept,avg_grade from S_G;

你可能感兴趣的:(数据库)