关系数据库标准语言SQL2016版-厦门大学数据库试验室.PPT

关系数据库标准语言SQL2016版-厦门大学数据库试验室.PPT

关系数据库标准语言SQL2016版-厦门大学数据库试验室

3.6 视 图 视图的特点 虚表,是从一个或几个基本表(或视图)导出的表 只存放视图的定义,不会出现数据冗余 基表中的数据发生变化,从视图中查询出的数据也随之改变 3.6 视 图 基于视图的操作 查询 删除 受限更新 定义基于该视图的新视图 3.6 视 图 3.6.1 定义视图 3.6.2 查询视图 3.6.3 更新视图 3.6.4 视图的作用 1. 建立视图 语句格式 CREATE VIEW 视图名 [(列名 [,列名]…)] AS 子查询 [WITH CHECK OPTION]; 行列子集视图 [例1] 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS; 从单个基本表导出 只是去掉了基本表的某些行和某些列保留了码 建立视图(续) DBMS执行CREATE VIEW语句时只是把 视图的定义存入数据字典,并不执行其中 的SELECT语句。 在对视图查询时,按视图的定义从基本表 中将数据查出。 插入子查询结果(续) [例] 对每一个系,求学生的平均年龄,并把结果存入数据库。 1.创建表,存入数据 2.通过视图 创建基表存数据 CREATE TABLE Deptage (Sdept CHAR(15) /* 系名*/ Avgage INT); /*学生平均年龄*/ INSERT INTO Deptage(Sdept,vgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept; 直接创建视图 Create view VSA(Sdept,vgage) as SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept; 组成视图的属性列名 全部省略或全部指定 省略: 由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: 某个目标列是集函数或列表达式 多表连接时选出了几个同名列作为视图的字段 (3) 需要在视图中为某个列启用新的更合适的名字 建立视图(续) WITH CHECK OPTION 透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件 (即子查询中的条件表达式) WITH CHECK OPTION的视图 [例2] 建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION 对IS_Student视图的更新操作 修改操作:DBMS自动加上Sdept= IS的条件 插入操作:DBMS自动检查Sdept属性值是否为IS 如果不是,则拒绝该插入操作 删除操作:DBMS自动加上Sdept= IS的条件 基于多个基表的视图 [例4] 建立选修了1号课程的学生视图(包括学号、姓名、成绩)。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno= 1; 基于视图的视图 [例5] 建立选修了1号课程且成绩在90分以上的学生的视图。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90; 带表达式的视图 [例6] 定义一个反映学生出

文档评论(0)

1亿VIP精品文档

相关文档