版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、视图是由一个或多个基本表导出的表,其内容由子查询定义。在数据库中只存储视图的定义,不存储数据,在引用时,由基本表中的数据动态生成。对视图的操作,都转换成对基本表的操作。第5章 数据库的视图P895.1 视图的定义5.1.1 视图的概念1(1)可简化用户的操作(2)可提供一定程度的逻辑数据独立性(3)对重要数据提供安全保护5.1.2 视图的作用 P89 2SQL语言用CREATE VIEW命令建立视图,其一般格式为:CREATE VIEW (,)AS WITH CHECK OPTION 其中,子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。 W
2、ITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。 5.2 创建视图 P905.2.1 使用SQL语句创建视图3组成视图的属性列名或者全部省略或者全部指定,如果省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。但在下列三种情况下必须明确指定组成视图的所有列名:某个目标列不是单纯的属性名,而是聚集函数或列表达式;多表连接时选出了几个同名列作为视图的字段;需要在视图中为某个列启用新的名字。4例1: 建立信息系学生的视图,并要求进行修改和插入操作
3、时仍需保证该视图只有信息系的学生。CREATE VIEW IS_S1 AS SELECT SNO,SNAME,AGE FROM S WHERE SDEPT=IS WITH CHECK OPTION GO加上了WITH CHECK OPTION子句,以后对该视图进行插入、修改和删除操作时,RDBMS会自动加上SDEPT=IS的条件。 5 若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图。 视图不仅可以建立在单个基本表上,也可以建立在多个基本表上。 6 例2: 建立信息系选修了1号课程的学生的视图。 CREATE VIEW IS_S2
4、(SNO,SNAME,GRADE) AS SELECT S.SNO,SNAME,GRADE FROM S JOIN SC ON S.SNO=SC.SNO WHERE SDEPT=IS AND SC.CNO=1 GO 由于视图IS_S2的属性列中包含了S表与SC表的同名列SNO,所以必须在视图名后面明确说明视图的各个属性列名。 7 视图不仅可以建立在一个或多个基本表上,也可以建立在一个或多个已定义好的视图上,或建立在基本表与视图上。P91例5.2 8操作步骤:(1)打开Microsoft SQL Server Management Studio窗口,展开相关数据库,右击“视图”节点,选择单击“新
5、建视图”命令。(2)在“添加表”对话框中,会出现“表”、“视图”等选项,选择“表”选项卡,再选择相关的表。(3)单击“添加”按键,完成后关闭“添加表”。P92图5.2(4)在视图窗口的“关系图”窗格中显示上面指定的表的全部信息,选择需要的列,对应在“条件”窗格中列出了选择的列,并显示相关表的连接语句。P93图5.3(5)单击“保存”按钮,在弹出的“选择名称”对话框中输入视图的名称,并单击“确定”按钮。例3:建立视图界面操作5.2.2 使用图形化界面创建视图 P91 9视图定义后,就可以像对待基本表一样对视图进行查询(SELECT)操作。 先进行有效性检查,查看用到的视图和表是否存在。检查有效后
6、,取出视图的定义 ,把定义中的子查询和当前要执行的查询结合起来,转化成等价的对基本表的查询,然后再执行查询操作。5.3 查询视图 P93 10例4:查询信息学生年龄大于19的学生信息。 USE JWGLSELECT *FROM IS_S1WHERE AGE19GO11但对视图中的元组进行更新操作就不一样了。这是由于视图是不实际存储数据的虚表,对视图的更新最终要转换为对基本表的更新。所以对视图的更新操作是有限制的,并不是所有的视图都能进行更新。5.4 更新视图 P9412对于视图元组的更新操作(INSERT、DELETE、UPDATA),有以下限制:(1) 如果一个视图是从多个基本表使用联接操作
7、导出的,那么不允许对这个视图执行更新操作。(2) 如果在导出视图的过程中,使用了分组和聚集函数操作,也不允许对这个视图执行更新操作。(3)如果在视图定义中使用了DISTINCT短语或GROUP BY子句,则不允许对该视图进行更新操作。(4)如果视图列的值为表达式或常数,则不允许对该视图进行更新操作。行列子集视图是可以执行更新操作的。在SQL2中,允许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。 131、插入数据(INSERT语句)例5: 向信息系学生视图IS_S1中插入一个新的学生记录,其中学号为200915129,姓名为赵新,年龄为20岁。 INSERT INTO
8、 IS_S1 VALUES(200915129,赵新,20)消息550,级别16,状态1,第1 行试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束的条件。语句已终止。如果在建视图时没有选择WITH CHECK OPTION就可又插入5.4.1 使用SQL语句更新视图 P94 142、更新数据(UPDATE语句)例6: 将信息系学生视图IS_S1中学号为200915122的学生姓名改为“刘辰”。 UPDATE IS_S1 SET SNAME=刘辰 WHERE SNO=2
9、00915122 转换后的更新语句为: UPDATE S SET SNAME=刘辰 WHERE SNO=200915122 AND SDEPT=IS153、删除数据(DELETE语句)例7: 删除信息系学生视图IS_S中学号为200915129的记录。 DELETE FROM IS_S1 WHERE SNO=200915129;转换为对基本表的更新: DELETE FROM S WHERE SNO=200915129 AND SDEPT=IS;在关系数据库中,有些视图是不可以更新的,其原因是这些视图的更新不能唯一地有意义地转换成对相应基本表的更新。看下面例题。 16 例8: 将学生的学号及他的
10、平均成绩定义为一个视图。 CREATE VIEW S_G(SNO,GAVG) AS SELECT SNO,AVG(GRADE) FROM SC GROUP BY SNO如果想把视图S_G中学号为200915121的学生的平均成绩改成90分,SQL语句如下: UPDATE S_G SET GAVG=90 WHERE SNO=200915121视图或函数S_G 不可更新,因为它包含聚合。17但这个对视图的更新是无法转换成对基本表SC的更新的,因为系统无法修改各科成 绩,以使平均成绩成为90。所以S_G视图是不可更新的。一般地,行列子集视图是可更新的。除行列子集视图外,还有些视图理论上是可更新的,但
11、它们的确切特征还是尚待研究的课题。还有些视图从理论上就是不可更新的。 18操作步骤:(P95图5.6,P96图5.7图5.8)(1)展开相关数据库中的视图,找到要更新的数据视图,右击并选择“打开视图”。(2)在出现的表格窗口中插入数据,插入完成后,系统自动检查插入的数据是否满足要求,满足则更新到基本表,否则提示插入失败。(3)对已经存在的数据进行更新时,在打开的视图表格中,找到需要更新的数据项进行修改。(4)需要删除视图中的记录时,在打开的视图表格中单击需要删除的行,右击并在快捷菜单中单击“删除”命令。5.4.2 使用图形化界面更新视图 P95 19语法格式:ALTER VIEW (,)AS
12、WITH CHECK OPTION5.5 修改视图定义 P96 5.5.1 使用SQL语句修改视图的定义 20例9: 修改信息系学生的视图,并要求年龄大于20.ALTER VIEW IS_S1 AS SELECT * FROM S WHERE SDEPT=IS AND AGE20 WITH CHECK OPTION21操作步骤:(1)展开指定的数据库中的相关视图,右击并在快捷菜单中选择“修改”命令。(2)在出现的窗口中进行相关修改。例:上例中,在窗口中增加一个限制条件,将年龄限制20以上.5.5.2 使用图形界面修改视图的定义P97 22 该语句的一般格式为: DROP VIEW CASCADE; 视图删除后,视图的定义将从数据字典中被删除。如果该视图上还导出了其他视图,则使用CASCADE级联删除语句,就可以把该视图和由它导出的所有视图一起删除。 基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但均已无法使用了。删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡村一体化工作制度
- 五四八小时工作制度
- 乡安办分管工作制度
- tdk公司工作制度
- 代煎工作制度及流程
- 办公室办文工作制度
- 加拿大政府工作制度
- 劳动法课堂工作制度
- 医学生实习工作制度
- 医药办公室工作制度
- 雨课堂学堂云在线《高级医学英语(首都医大 )》单元测试考核答案
- 客户订单管理SOP文件
- 初中物理欧姆定律(教学课件)2025-2026学年初中物理人教版(2024)九年级全一册
- 肿瘤患者的营养评估及指导
- 成都存量房合同(标准版)
- 小学科学国培汇报
- 制造业安全知识培训模板课
- 服装生产线平衡分析与仿真优化研究
- DB13∕T 5603-2022 工贸行业非高危建设项目安全设施“三同时”报告编制导则
- 纯化水管道施工方案及钝化记录
- 售后服务管理师培训课件
评论
0/150
提交评论