第3章关系数据库标准语言-3.ppt

第3章关系数据库标准语言-3

3.6.1 定义视图 建立视图 删除视图 Page ? * 一、建立视图 语句格式 CREATE VIEW 视图名 [(列名 [,列名]…)] AS 子查询 [WITH CHECK OPTION]; 子查询不允许含有ORDER BY子句和DISTINCT短语 组成视图的属性列名:全部省略或全部指定 Page ? * 组成视图的属性列名 全部省略或全部指定: 省略: 由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: (1) 某个目标列是集函数或列表达式 (2) 多表连接时选出了几个同名列作为视图的字段 (3) 需要在视图中为某个列启用新的更合适的名字 Page ? * 建立视图(续) RDBMS执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。 在对视图查询时,按视图的定义从基本表中将数据查出。 Page ? * 常见的视图形式 行列子集视图 基于多个基表的视图 WITH CHECK OPTION的视图 基于视图的视图 带表达式的视图 分组视图 Page ? * 建立视图(续) [例1] 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS; 从单个基本表导出 只是去掉了基本表的某些行和某些列 保留了主键 Page ? * 例9 建立视图(续) [例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION; Page ? * 建立视图(续) 对IS_Student视图的更新操作: 修改操作:自动加上Sdept= IS的条件 删除操作:自动加上Sdept= IS的条件 插入操作:自动检查Sdept属性值是否为IS 如果不是,则拒绝该插入操作 如果没有提供Sdept属性值,则自动定义Sdept为IS Page ? * 建立视图(续) 基于多个基表的视图 [例3] 建立信息系选修了1号课程的学生视图。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= 1; Page ? * 建立视图(续) 基于视图的视图 [例4] 建立信息系选修了1号课程且成绩在90分以上的学生的视图。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Cno=‘1’ and Grade=90; Page ? * 例8 建立视图(续) 带表达式的视图 [例5] 定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2014-Sage FROM Student; Page ? * 建立视图(续) 分组视图 [例6] 将学生的学号及他的平均成绩定义为一个视图 假设SC表中“成绩”列Grade为数字型 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; Page ? * 建立视图(续) 不指定属性列 [例7]将Student表中所有女生记

文档评论(0)

1亿VIP精品文档

相关文档