5-5

来源:百度文库 编辑:神马文学网 时间:2024/04/28 05:52:24


5.5.1 什么是视图
1.外模式一级数据结构的基本单位是视图(view)
2.定制的虚拟表
3.从一个或几个基本表(或视图)导出的表
4.视图可以更新
5.用户的外视图由基本表和视图组成
6.只保存视图的定义,不存放视图的数据
7.以多种角度观察数据库中的数据
8.通过视图这样的窗口,看到数据库中用户感兴趣的数据 5.5.2 视图的创建
1.句法
  CREATE VIEW <视图名> (<列表序列>) AS

2.创建一个有关计算机系学生情况的视图Student_CS
CREATE VIEW Student_CS AS
 SELECT Sno,Sn,Age,Sex
 FROM Student
 WHERE Dept='CS'
3.创建一个有关学生成绩情况的视图S_SC_C
CREATE SQL VIEW S_SC_C AS
 SELECT Sn,Cn,Grade
 FROM Student,Course,Sc
 WHERE Student.Sno=Sc.Sno AND Sc.Cno=Course.Cno
4.创建一个有关学生平均成绩的视图AVGG
CREATE SQL VIEW AVGG AS
 SELECT Sno,AVG(G)
 FROM Sc
 GROUP BY Sno
5.视图中的虚字段
Create SQL view student2 as
 SELECT sno Number,sn Name,2004-age Birthday
 FROM student 5.5.3 视图的撤销
1.句法
  DROP VIEW <视图名>
2.例句
  DROP VIEW Student2 5.5.4 视图的操作
1.说明
   ①在视图定义以后,对于视图的查询(SELECT)操作,与基本表一样
   ②为简单起见,一般只对“行列子集视图”才能更新
  如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。允许用户更新的视图在定义时必须加上“WITH CHECK OPTION”短语
  据上述定义可知,定义在多个基本表上的视图,或者使用聚合操作的视图,或者不包含基本表主键的视图都是不允许更新的

2.查找视图S_SC_C中不及格的成绩
   ①SELECT * FROM S_SC_C WHERE Grade <60
   ②实际操作:
SELECT *
FROM Student,Course,Sc
WHERE Student.Sno=Sc.Sno AND Sc.Cno=Course.Cno AND Grade<60
3.如果定义了一个有关男学生的视图
CREATE VIEW Student_MALE AS
 SELECT Sno,Sname,Age
 FROM Student
 WHERE Sex ='M'   视图从单个关系只使用选择和投影导出,且包含主键Sno,是行列子集视图,可更新
  执行插入操作:
  INSERT INTO Student_MALE VALUES ('S28','WU',18)
  系统自动会把它转变成下列语句:
  INSERT INTO Student VALUES ('S28', 'WU',18, 'M')