视图 ※视图是从一个或几个基本表(或视图)导出的 表。它与基本表不同,是一个虚表。数据库中 只存放视图的定义,而不存放视图对应的数据, 这些数据仍存放在原来的基本表中
视图 ※视图是从一个或几个基本表(或视图)导出的 表。它与基本表不同,是一个虚表。数据库中 只存放视图的定义,而不存放视图对应的数据, 这些数据仍存放在原来的基本表中
建立视图 ※用 CREATE VIEW命令建立视图,格式为: CREATEⅥEW<视图名>[(<列名?[,<列名>])]As <子查询>Ⅳ WITH CHECK OPTION]; ※其中,子查询可以是任意复杂的 SELECT语句,但通 常不允许含有 ORDER BY子句和 DISTINCT短语。 ※ WITH CHECK OPTION表示对视图进行 UPDATE, INSERT和 DELETI操作时要保证更新、插入或删除 的行满足视图定义中的谓词条件(即子查询中的条件 表达式)
建立视图 ※用CREATE VIEW命令建立视图,格式为: CREATE VIEW <视图名> [(<列名>[,<列名>]…)]AS <子查询>[WITH CHECK OPTION]; ※其中,子查询可以是任意复杂的SELECT语句,但通 常不允许含有ORDER BY子句和DISTINCT短语。 ※WITH CHECK OPTION表示对视图进行UPDATE, INSERT和DELETE操作时要保证更新、插入或删除 的行满足视图定义中的谓词条件(即子查询中的条件 表达式)
视图中的字段 组成视图的属性列名或者全部省略或者全部指定,如果省略了视图的 各个属性列名,则隐含该视图由子查询中 SELECT子句目标列中的诸字段 组成。但在下列三种情况下必须明确指定组成视图的所有列名: 某个目标列不是单纯的属性名,而是聚集函数或列表达式 冷多表连接时选出了几个同名列作为视图的字段; 冷需要在视图中为某个列启用新的名字。 例:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证 该视图只有信息系的学生。 CREATE VIEWIS S1AS 加上了 WITH CHECK OPTION子 SELECT SNO, SNAME, AGE句,以后对该视图进行插入、修改 FROMS 和删除操作时, RDBMS会自动加 WHERE SDEPT=’s 上 SDEPT=S的条件。 WITH CHECK OPTION:
组成视图的属性列名或者全部省略或者全部指定,如果省略了视图的 各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段 组成。但在下列三种情况下必须明确指定组成视图的所有列名: ❖ 某个目标列不是单纯的属性名,而是聚集函数或列表达式; ❖ 多表连接时选出了几个同名列作为视图的字段; ❖ 需要在视图中为某个列启用新的名字。 例: 建立信息系学生的视图,并要求进行修改和插入操作时仍需保证 该视图只有信息系的学生。 CREATE VIEW IS_S1 AS SELECT SNO,SNAME,AGE FROM S WHERE SDEPT=’IS’ WITH CHECK OPTION; 加上了WITH CHECK OPTION子 句,以后对该视图进行插入、修改 和删除操作时,RDBMS会自动加 上SDEPT=’IS’的条件。 视图中的字段
视图 ※若一个视图是从单个基本表导出的,并目只是去掉了基本表的某 些行和某些列,但保留了主码,我们称这类视图为行列子集视图。 ※视图不仅可以建立在单个基本表上,也可以建立在多个基本表上。 ※例:建立信息系选修了号课程的学生的视图。 CREATEVIEWIS S2(SNO, SNAME, GRADEJAS SELECTS, SNO, SNAME, GRADE FROMS, SC WHERESDEPTE, ANDS SNOESC, SNOAND SC.cNO=’1; ※由于视图sS2的属性列中包含了S表与Sc表的同名列SNo,所 以必须在视图名后面明确说明视图的各个属性列名。 ※视图不仅可以建立在,个或多个基本表上,也可以建立在一个或 多个已定义好的视图上,或建立在基本表与视图上
视图 ※ 若一个视图是从单个基本表导出的,并且只是去掉了基本表的某 些行和某些列,但保留了主码,我们称这类视图为行列子集视图。 ※ 视图不仅可以建立在单个基本表上,也可以建立在多个基本表上。 ※ 例:建立信息系选修了l号课程的学生的视图。 CREATEVIEWIS_S2(SNO,SNAME,GRADE)AS SELECTS.SNO,SNAME,GRADE FROMS,SC WHERESDEPT=’IS’ANDS.SNO=SC.SNOAND SC.CNO=’1’; ※ 由于视图IS_S2的属性列中包含了S表与SC表的同名列SNO,所 以必须在视图名后面明确说明视图的各个属性列名。 ※ 视图不仅可以建立在一个或多个基本表上,也可以建立在一个或 多个已定义好的视图上,或建立在基本表与视图上
删除视图 ※该语句的一般格式为: DROP VIEW<视图名>[ CASCADE]; 视图删除后,视图的定义将从数据字典中被删除。如果该视图上还导 出了其他视图,则使用 CASCADE级联删除语句,就可以把该视图和由它 导出的所有视图一起删除。 基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但 均已无法使用了。删除这些视图(定义)需要使用 DROP VIEW语句。 例:删除视图BTS: DROP VIEWBT S 删除视图|sS1: DROP VIEW IS S1
※ 该语句的一般格式为: DROP VIEW <视图名> [CASCADE]; 视图删除后,视图的定义将从数据字典中被删除。如果该视图上还导 出了其他视图,则使用CASCADE级联删除语句,就可以把该视图和由它 导出的所有视图一起删除。 基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但 均已无法使用了。删除这些视图(定义)需要使用DROP VIEW语句。 例:删除视图BT_S: DROP VIEW BT_S; 删除视图IS_S1: DROP VIEW IS_S1; 删除视图